0

我的颤振页面上有以下组件。

TextFormField(
                    controller: surveyDateController, 
                    decoration: InputDecoration(
                      border: OutlineInputBorder(),
                      hintText: 'Survey Date',
                    ),
                  ),

我有以下控制器用于上述控制

  final surveyDateController = TextEditingController();

数据来自从 API 加载的 _data.leadSurvey[0].title。加载数据后,我将调用 setState 方法,如下所示:

setState(() {
        _data = data;
      });

但是 TextFormField 中的数据没有得到更新。尝试使用 initialValue 属性,但它会生成 null 错误。

有帮助吗?

4

5 回答 5

0

在 setState() 中设置数据到控制器

  setState(() {
        _data = data;
        surveyDateController.text = _data.leadSurvey[0].title
      });
于 2021-06-09T09:36:25.943 回答
0

假设您有 $your_text_controller$ 并将其分配给您的文本字段,如下所示:

TextFormField(
                    controller: surveyDateController, 
                    decoration: InputDecoration(
                      border: OutlineInputBorder(),
                      hintText: 'Survey Date',
                    ),
                  ),

现在,您可以通过在任何地方调用此函数来设置此文本字段的文本:

void setText(){

    setState((){
        surveyDateController.text = "Your Text"; // Ex. _data.leadSurvey[0].title
    });
}
于 2021-06-09T09:37:25.403 回答
0

我不完全确定data应该出现在哪里,但如果你想让它出现在你的TextFormField,我想你必须打电话surveyDateController.value = data

于 2021-06-09T09:21:12.353 回答
0

给 TextFormField 一个默认值:

final surveyDateController = TextEditingController(text: 'initial data here');

要为 TextFormField 重新分配一个值:

surveyDateController.text = _data;
于 2021-06-09T09:46:39.127 回答
0

从服务器获取数据字符串后

然后设置你的编辑控制器(surverDateController)

surveyDateController.text = _data.leadSurvey[0].title
于 2021-06-09T09:26:29.963 回答