flutter - Flutter 将文本添加到 TextField 控制器中
问题描述
当我使用此代码时,它工作正常,controller.text 被更新。
textController.addListener(() {
setState(() {
textController.text = analyzeText;
});
});
但是当我尝试添加文本结尾时,它崩溃并没有给出错误。为什么?
textController.addListener(() {
setState(() {
textController.text += ' ' + analyzeText;
});
});
解决方案
这不起作用,因为StackOverflowError
. 当调用堆栈由于过度深度或无限递归而超出时,它会被抛出。
setState(() {
textController.text += ' ' + analyzeText;
});
上面的代码不断改变值控制器,它将替换里面的小部件WidgetTree
,因为它Flutter
是不可变的,它会在内存中一次又一次地创建 Widget,因此,您将遇到上述错误。
推荐阅读
- c# - 如何在 DTO 中正确存储多个结果?
- php - Data read and output with a loop
- r - 如何在 nls 中动态填充起始值?
- python - Jupyter Notebook matplotlib notebook 使绘图不显示,内联使其不具有交互性
- javascript - 将opentype转入paper.js,贝塞尔曲线问题
- php - Laravel/Eloquent 关系中的多个连接规则
- c++ - 为什么 std::stream 操纵器基础结构中存在类型不一致?
- django - /etc/nginx/conf.d/default.conf:1 中不允许使用“http”指令
- reactjs - 使用 React 测试库按组件名称进行测试
- java - Java Socket 和 ServerSocket 通信死锁