1

我在flutter上使用flutter_form_builder构建了一个表单,当第二次打开表单时,我需要从本地数据库中预先填写表单。当我在其中调用它时,initState它无法预填充表单小部件。

setState(() {
   _formKey.currentState!.patchValue({
       'subCity': result?.subCity,
       'landmark': result?.landmark,
   });
});

我查看了 flutter_form_builder 的文档,没有提到我需要用来执行此操作的生命周期。它仅显示如何处理提交表单。

如果有人遇到过这种情况,请告诉我您是如何解决的。谢谢。

4

1 回答 1

0

您需要为每个字段分配一个 TextEditingController,然后在 initState 上初始化每个字段,这是一个示例:

class _MyHomePageState extends State<MyHomePage> {
  TextEditingController _formController = TextEditingController();
  @override
  
  void initState() {
    _formController.value = TextEditingValue(text: 'initializedValue');
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      backgroundColor: Colors.red,
      body: Center(
        child: FormBuilder(
          child: FormBuilderTextField(
            name: 'the text field',
            controller: _formController,
          ),
        ),
      ),
    );
  }
}
于 2021-10-05T09:32:52.187 回答