Vin*_*lla 1 controller default-value textfield flutter stream-builder
我们正在创建用户的编辑数据页面,因此文本字段已经充满了用户数据,用户可以更改并保存它。问题是,当我开始在文本字段中输入字符时,光标会丢失,每个字符我输入(从设备键盘输入),光标移到第一个字符...并且如果我删除带有初始值的控制器,它可以正常工作,但是我的文本字段无法填充用户数据。
代码示例:
child: StreamBuilder<String>(
stream: _bloc.myStream,
builder: (context, snap) => TextField(
decoration: InputDecoration(
hintText: 'example',
labelText: 'Name',
errorText: snap.error,
),
onChanged: _bloc.updateMyStream,
controller: TextEditingController(text: snap.data),
),
),
Run Code Online (Sandbox Code Playgroud)
@XoXo 这里是完整代码,但您可以按照自己的方式进行。
TextEditingController _controller = TextEditingController();
return StreamBuilder<String>(
stream: _bloc.myStream,
builder: (context, snap) {
_controller.value =
_controller.value.copyWith(text: snap.data);
return TextField(
decoration: InputDecoration(
hintText: 'ex: Centro',
labelText: 'Bairro',
errorText: snap.error,
),
onChanged: _bloc.updateMyStream,
controller: _controller,
);
});
Run Code Online (Sandbox Code Playgroud)
每当您需要更新TextController文本时,要进行编辑,就需要像这样固定光标位置
textController.value = textController.value.copyWith(text:<NEW_VALUE>,);
Run Code Online (Sandbox Code Playgroud)
用新文本替换NEW_VALUE。
| 归档时间: |
|
| 查看次数: |
2130 次 |
| 最近记录: |