首页 > 解决方案 > Flutter:TextFormField,改变文字

问题描述

我有这个返回 TextFormField 的未来构建器:

new FutureBuilder(
                    future: _controller.load(),
                    builder: (BuildContext context, AsyncSnapshot<String> snapshot) {
                    String content;
                    if (snapshot.hasData) {
                    Map data = _controller.decode(snapshot.data);
                    content = data['x'];
                    }
return TextFormField(controller: 
textController = new TextEditingController(text: content == null ? "" : content),

所以,一开始,如果快照不为空,我希望在字段中显示一个初始值。但是我以后如何更改此文本?(因为,如果用户更改此字段,然后按键盘上的“确定”,旧值将替换新值)我尝试了类似的东西:

onFieldSubmitted: (val){
                      setState(() {
                        content = val;
                      });

但不起作用,只要我按“确定”,旧值就会再次出现

标签: dartflutter

解决方案


在类级别定义 TextEditingController,然后将其设置为initialValue来自 Future 的值。

class MyWidgetOrState {
  final controller = TextEditingController();
  ...
  if (content != null) controller.initialValue = content;

推荐阅读