我正在学习Flutter,在我的应用程序中,有两个textField链接到AlertDialog中的textController,以从用户那里获取输入作为文本,并将其显示在屏幕主体中。我自己无法解决的问题是,在AlertDialog的“保存”按钮中添加了setState((){})之后,文本将自动显示在主体屏幕上,按下“保存”后,此更改不会再次清除在TextFields中输入的文本。
我的代码:
class _HomeScreenState extends State<HomeScreen> {
final TextEditingController titleController = TextEditingController();
final TextEditingController textController = TextEditingController();
DummyDataProvider notes;
@override
void dispose() {
// Clean up the controller when the widget is disposed.
titleController.dispose();
textController.dispose();
super.dispose();
}
有问题的textControllers:
MaterialButton(
onPressed: () {
setState(() {
final title = titleController.text;
final text = textController.text;
NoteProvider.insertNote({'title': title, 'text': text});
Navigator.pop(context);
});
我的意思是不处理的文本:https://imgur.com/a/8pyTPM7,https://imgur.com/a/lr8a3Eh
谢谢你!
您可以重置文本控制器。
例如,在onpressed中:
titleController.text = new TextEditingController();
textController.text = new TextEditingController();
不需要设置状态。