dart - 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;
});
但不起作用,只要我按“确定”,旧值就会再次出现
解决方案
在类级别定义 TextEditingController,然后将其设置为initialValue
来自 Future 的值。
class MyWidgetOrState {
final controller = TextEditingController();
...
if (content != null) controller.initialValue = content;
推荐阅读
- mxgraph - mxgraph 如何使边缘可放置并在源和目标之间插入新顶点
- http - 如何在颤动中解析这个json?
- c++ - 在同一模拟中使用静脉和静脉_inet 内容的运行时错误
- mongodb - 如果 MongoDB 中压缩数组的第 n 个元素为空,如何将数组中的第 n 个值设置为 $zip 的默认值?
- c# - .NET Core DI 调查 IConfiguration
- powershell - 复制数据时排除少数文件夹,并在 Powershell 中复制剩余文件夹和仅某些文件类型
- javascript - 我在使用 React Hook 时遇到了问题 - useDispatch()
- mysql - 带有 2 个分隔符的 SUBSTRING_INDEX
- java-8 - 由于 XMLConstants.ACCESS_EXTERNAL_DTD,QFJ 从 2.1.1 升级到 2.2.0 的问题
- node.js - 为什么 POST 测试失败 - “重复键值违反唯一约束 [表名]_pkey”?