【问题标题】:Flutter, how to dispose textControllerFlutter,如何处理 textController
【发布时间】:2020-04-21 08:59:23
【问题描述】:

我正在学习 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

提前谢谢你!

【问题讨论】:

  • 请澄清您的问题描述并缩小您共享的代码范围。对于 TextController 未清除的问题,150 行代码过多。此外,您共享了我们无法使用的代码,因为我们没有类并且与问题无关。 stackoverflow.com/help/how-to-ask
  • 感谢您的建议,我似乎需要它,因为我是这个平台的新手。我继续编辑了我的帖子,我希望现在更加清晰和准确。祝你有美好的一天!

标签: flutter dart dispose setstate


【解决方案1】:

为什么不直接使用clear()

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

【讨论】:

    【解决方案2】:

    您可以重置文本控制器。

    例如在onpressed中:

    titleController = new TextEditingController();

    textController = new TextEditingController();

    这不需要设置状态。

    【讨论】:

    • 所以我尝试了你的解决方案,但现在我有这个我没有知识解决的错误,也许你可以帮助我使它工作:imgur.com/a/azvbxHr。也感谢您的及时答复
    • 现在编辑了我的答案检查。应该只初始化控制器而不是文本。
    • 避免这样做@ADNANJAKATI
    【解决方案3】:
    TextEditingController 
    

    非常昂贵的对象,不要经常创建它

    只需使用

    TextEditingController.text == '';

    清除文本,

    【讨论】:

    • 忽略多余的 =
    猜你喜欢
    • 2020-09-28
    • 1970-01-01
    • 2021-07-26
    • 2021-12-12
    • 2018-09-14
    • 2019-09-05
    • 2019-11-17
    • 2018-12-05
    • 1970-01-01
    相关资源
    最近更新 更多