FlutterBloc-将状态值设置为TextFormField中的初始文本



请查看我的示例代码:

@override
Widget build(BuildContext context) {
final selectedIssue = context.select((IssueDetailsBloc bloc) => bloc.state.selectedIssue) ?? InternalIssue();
return WillPopScope(
onWillPop: () async {
final issuesScheduleBloc = context.read<IssuesScheduleBloc>();
issuesScheduleBloc.add(UpdateIssueEvent(id: selectedIssue.id ?? 0, newData: selectedIssue));
return true;
},
child: Scaffold(
appBar: AppBar(title: const Text('Issue details')),
body: Column(
children: [
Text(selectedIssue.title ?? ''), //<==== correct value is displayed
TextFormField(initialValue: selectedIssue.title ?? '' //<==== selectedIssue.title is always null
, onChanged: (text) {
selectedIssue.title = text;
},)
],
),
),
);
}

我希望能够编辑我当前问题的值。为了显示要编辑的当前值,initialValue属性已设置为selectedIssue.title。问题:只要selectedIssue.title用于显示静态文本,一切都很好。但每次我尝试将它用作文本表单字段的初始值时,值都会恢复为null。

有什么正确的方法吗?

在文件的开头定义一个控制器,如下

TextEditingController controller = TextEditingController();

给你的文本字段这个控制器像这个

TextFormField(
controller: controller,
)

然后在初始化状态下,给控制器一个类似的文本

@override
void initState() {
controller.text = "your initial text";
}

最新更新