【问题标题】:Flutter adding text into TextField controllerFlutter 将文本添加到 TextField 控制器中
【发布时间】:2020-09-25 14:29:30
【问题描述】:

当我使用此代码时,它可以正常工作,controller.text 会更新。

textController.addListener(() {
          setState(() {
            textController.text = analyzeText;
          });
        });

但是当我尝试添加文本结尾时,它崩溃并没有给出错误。为什么?

textController.addListener(() {
          setState(() {
            textController.text += ' ' + analyzeText;
          });
        });

【问题讨论】:

  • 您是否尝试将文本保存在单独的变量中,然后将其分配给控制器?

标签: flutter controller textfield


【解决方案1】:

在我看来,您正在创建一个永无止境的循环,可能会造成某种内存泄漏。您有一个监听器监听控制器中的更改,并且在该监听器内部您正在对同一个控制器进行更改。所以一旦开始,就永远不会停止。这很可能会导致崩溃。

【讨论】:

  • 是的,你是对的,原因是听众。我修好了。谢谢
【解决方案2】:

由于StackOverflowError,这不起作用。当调用堆栈由于过度的深度或无限递归而超出时,它会被抛出。

  setState(() {
            textController.text += ' ' + analyzeText;
          });

上面的代码不断改变值控制器,它将替换WidgetTree中的小部件,因为Flutter不可变它会在内存中一次又一次地创建小部件,所以有了这个,就会出现上述错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-26
    • 2019-01-01
    • 2019-05-31
    • 2021-09-28
    • 2021-04-13
    • 1970-01-01
    • 2013-12-04
    相关资源
    最近更新 更多