Я сейчас работаю над приложением флаттера. Я пытаюсь получить ввод пользователя с помощью TextFormField и передать его на следующую страницу с помощью навигатора внутри FlatButton. Но по какой-то причине он работает не так, как я ожидал.
Вот код:
TextFormField(
decoration: InputDecoration(
enabledBorder: OutlineInputBorder(
borderRadius: BorderRadius.all(Radius.circular(8)),
borderSide: BorderSide(color: Colors.grey[200])),
focusedBorder: OutlineInputBorder(
borderRadius: BorderRadius.all(Radius.circular(8)),
borderSide: BorderSide(color: Colors.grey[300])),
filled: true,
fillColor: Colors.grey[100],
errorBorder: InputBorder.none,
focusedErrorBorder: InputBorder.none,
errorStyle: Theme.of(context).textTheme.caption,
hintText: 'Phone Number',
),
keyboardType: TextInputType.phone,
controller: _phoneController,
maxLength: 10,
validator: (value) {
print(value);
return isPhoneValid(value)
? 'Continue'
: "Input : 98XXXXXXXX";
},
),
FlatButton(
child: Text('Enter'),
textColor: Colors.white,
disabledColor: Colors.grey,
padding: EdgeInsets.all(16),
onPressed: (isPhoneValid(_phoneController.text))
? () {
Navigator.push(context, MaterialPageRoute(builder,(context)=>HomeScreen));
}
: null,
color: Colors.blue,
),
, и они находятся вне функции сборки.
final _phoneController = TextEditingController();
bool isPhoneValid(String value) {
print('Function');
print(value);
return value.trim().length == 10;
}
По какой-то причине onPressed в FlatButton всегда отображается в null. Пожалуйста, помогите мне в этом отношении.
Заранее спасибо.
PS: валидатор внутри TextFormField тоже не работает.