【问题标题】:Input problems of TextFormField in FlutterFlutter中TextFormField的输入问题
【发布时间】:2021-12-23 00:44:04
【问题描述】:

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

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),
                        ),
...

【问题讨论】:

    标签: android ios flutter dart mobile


    【解决方案1】:

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

    你也可以使用late关键字。

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

    【讨论】:

    • 感谢您的回答。你是最棒的:)
    猜你喜欢
    • 2020-05-18
    • 2023-01-08
    • 1970-01-01
    • 2019-10-24
    • 2022-01-26
    • 1970-01-01
    • 2022-01-22
    • 2022-10-21
    • 2020-11-23
    相关资源
    最近更新 更多