Проблемы ввода текстового поля во флаттере

#android #ios #flutter #dart #mobile

Вопрос:

Мне нужно обновить значения экрана. Когда я нажал кнопку, она должна установить значения экрана. Это работает, но когда я пытаюсь изменить одно поле и перейти к следующему полю, первое значение возвращается к первому значению. Вот моя кодовая часть:

 class _AccountScreenState extends Statelt;AccountScreengt; {  final api = ApiServices();  var formKey = GlobalKeylt;FormStategt;();  var emailController = TextEditingController();  var pwdController = TextEditingController();  var phoneController = TextEditingController();  @override  Widget build(BuildContext context) {  emailController.text = widget.account.email!;  phoneController.text = widget.account.phoneNumber!; ...  child: TextFormField(controller: emailController,  decoration: InputDecoration(prefixText: "Email: ",  prefixStyle: TextStyle(fontWeight: FontWeight.w600),  labelText: "E-mail",  border: OutlineInputBorder(borderSide: BorderSide.none),  fillColor: Colors.white,  filled: true),  ), ...  

Ответ №1:

Вы можете удалить свой код из метода сборки, потому что при использовании метода setstate все методы сборки перестраиваются. таким образом, вы можете просто поместить свой код в метод initstate.

также вы можете использовать ключевое слово late.

 late TextEditingController emailController;  @override  void initState() {  emailController = TextEditingController(text: widget.account.email!);  // TODO: implement initState  super.initState();  }  

Комментарии:

1. Спасибо вам за ваш ответ. Ты самый лучший 🙂