- 问题 *
isEmpty
检查返回非空字符串字段的true
。我的猜测是- TextEditingController的String元数据没有从一个BLOG加载中更新字符串。
1.我不确定我是否错过了一些明显的东西,或者这是一个 dart /Flutter错误。
1.有没有一个习惯的方法来完成这个检查?
这是我的代码
var textController = TextEditingController();
@override
void initState() {
super.initState();
init();
}
void init() async {
final foo = await FooProvider.instance.getFoo(widget.uuid);
textController.text = foo.title;
}
textController的实际用法,
GestureDetector(
onTap: textController.text.isEmpty
? () {
debugPrint('Empty - ${textController.text}');
}
: () {
// rest of the code
输出(带实际字段值“abc”)x1c 0d1x
2条答案
按热度按时间bhmjp9jg1#
如果您更改
TextEditingController
的文本,您的小部件将不会自动重建。因为
setState
从未被调用过。解决方案
1.(推荐)如果你想监听值的变化,用
ValueListenableBuilder
PackagetextController
。1.(不推荐)如果
textController
值发生变化,请手动调用setState
。这将重新构建您的小部件的整个小部件树。
1.在
GestureDetector.onTap
中评估isEmpty
通过@Ivo的评论,你可以在
onTap
中检查isEmpty
。这是因为isEmpty
是在onTap
被调用时计算的。ffvjumwh2#
另一种解决方案是在
onTap
的单个实现中进行检查,而不是像下面这样在两个不同的实现中进行检查