首页 > 解决方案 > Flutter,如何处理 textController

问题描述

我正在学习 Flutter,我在我的应用程序中有两个 textFields 链接到 AlertDialog 中的 textControllers 以获取用户的输入作为文本并将其显示在屏幕主体的卡片中。我自己无法解决的问题是,在 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();
  }

有问题的文本控制器:

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

先感谢您!

标签: flutterdartdisposesetstate

解决方案


为什么不直接使用clear()

final _textController = TextEditingController();
.....
.....
onPressed: () {
    _textController.clear();
}

推荐阅读