Flutter:TextFormField,改变文字

Posted

技术标签:

【中文标题】Flutter:TextFormField,改变文字【英文标题】:Flutter: TextFormField, change text 【发布时间】:2019-03-21 03:23:05 【问题描述】:

我有这个返回 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),

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

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

但是不行,一按“ok”,旧值又会出现

【问题讨论】:

【参考方案1】:

这是一种方法。

StreamController<String> someStream = StreamController<String>();

  new StreamBuilder<String>(
      stream: someStream.stream,
      builder: (BuildContext context, AsyncSnapshot<String> result) 
        // you get notified here about updates on someStream
        return new Text(currentData,
            style: new TextStyle(
                color: new Color(0xFF05164D), fontSize: 36.0));
      )

  new FlatButton(
      onPressed: () 
            someStream.add("ok");
      )

【讨论】:

【参考方案2】:

在类级别定义 TextEditingController,然后使用 Future 中的值将其设置为 initialValue

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

【讨论】:

以上是关于Flutter:TextFormField,改变文字的主要内容,如果未能解决你的问题,请参考以下文章

更改 FLUTTER 中 TextFormField 的默认边框颜色

Flutter增加TextFormField的高度

Flutter - 键盘隐藏时TextFormField变为空白

Flutter 扩展/占用 TextFormField 以填充屏幕的其余部分

Flutter 2 - 设置自动完成 TextFormField 的初始值

在 TextFormField 中检测新行 - Flutter