Flutter:TextFormField,更改文本

时间:2018-10-16 14:41:06

标签: dart flutter

我有这个将来的生成器,它返回一个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;
                      });

但不起作用,当我按“确定”时,旧值将再次出现

2 个答案:

答案 0 :(得分:0)

这是一种方法。

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");
      })

答案 1 :(得分:0)

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

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