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 以填充屏幕的其余部分