Flutter中TextFormField的输入问题

Input problems of TextFormField in Flutter

我需要更新屏幕的值。当我按下按钮时,它必须设置屏幕的值。它正在做,但是当我尝试更改一个字段并转到下一个字段时,第一个值变回第一个值。这是我的代码部分:

class _AccountScreenState extends State<AccountScreen> {
  final api = ApiServices();
  var formKey = GlobalKey<FormState>();
  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),
                        ),
...

您可以从 Build 方法中删除代码,因为当您使用 setstate 方法时,所有 Build 方法都会重新生成。 所以你可以把你的代码放在 initstate 方法中。

你也可以使用 late 关键字。

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