【问题标题】:Flutter: TextFormField, change textFlutter:TextFormField,改变文字
【发布时间】: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”,旧值又会出现

【问题讨论】:

    标签: dart flutter


    【解决方案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;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-02-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-21
        • 1970-01-01
        相关资源
        最近更新 更多