flutter - 为什么我看不到 useTextEditingController 值的更新?
问题描述
我希望效果会在文本更改时记录文本的当前值,但它仅针对初始值运行。为什么?
class RecordForm extends HookWidget {
final Record? record;
const RecordForm({
Key? key,
this.record,
}) : super(key: key);
@override
Widget build(BuildContext context) {
final initialTitle = record != null ? record!.title : "";
final _title = useTextEditingController
.fromValue(TextEditingValue(text: initialTitle));
useEffect((){
log.wtf(_title.value.text);
}, [_title.value]);
return // ...
TextFormField(
controller: _title,
// ...
),
// ...
;
}
}
解决方案
这样做会初始化 TextEditingController 一次。我认为,如果您想收听实时更改,则必须为其添加侦听器。
TextEditingController controller = useTextEditingController();
controller.addListener(() {
print(controller.text);
});
推荐阅读
- python - 来自 sklearn 的高斯混合模型分类器的精度不稳定
- google-apps-script - 你能在 Google-Apps-Script 失败时做点什么吗?
- c - 为什么我收到一条错误消息,提示我的函数类型存在冲突?(已编辑)
- python - 如何在 Alembic 迁移中生成数据,即 --autogenerate
- c# - 列表
未提供值时无法反序列化 - sql - 在 SSRS 中使用多个日期参数
- c - 如何使用 fscanf() 避免特定行?
- angular7 - ng-block-ui 不适用于 Angular 7 concatmap
- markdown - GFM 的 spec.txt 中的交叉引用如何工作?
- c - 如何将 pdf 文件作为背景导入 GtkDrawingArea