final TextEditingController _weight = TextEditingController();
if (_weight.text.contains(RegExp(r'[0-9]')))
Padding(
padding: const EdgeInsets.only(bottom: 20),
child: BMIButton(
onpressed: () {
Navigator.push(
context,
PageTransition(
type: PageTransitionType.rightToLeft,
child: BMIHeight(),
inheritTheme: true,
ctx: context),
);
},
))
当用户在textFormField中输入一些数据时,我试图显示OutlinedButton。当我在TextFormField中输入值并确认时,它不显示按钮,但当我热重新加载它时,它看到该值并显示按钮。
4条答案
按热度按时间oxosxuxt1#
尝试添加侦听器并调用setState以更新ui
并重写dispose方法并释放此控制器。
rkue9o1l2#
这意味着你只需要更新小部件的状态,首先确保它在一个
StatefulWidget
内,然后在该方法的末尾添加一个SetState(() {})
:hec6srdp3#
TextEditingController
正在实现Listenable
。您可以利用它来有条件地构建部分UI。此外,
TextEditingController
必须正确地初始化和处理,您可以使用flutter_hooks顺利地完成这一任务。您将得到以下简洁的结果:
hjzp0vay4#
检查TextFormField是否被填充的代码需要位于有状态部件的build函数中。要触发状态更新,请监听TextFormField上的变化,然后在函数中设置一些可以检查的变量的状态。将以下代码添加到initState方法中:
并按如下所示更改if语句:
方法二
您也可以使用可见性小部件 Package 小部件:
这仍然需要具有setState调用的侦听器。