【发布时间】:2021-07-24 13:20:41
【问题描述】:
我有一个小部件,打算在我的应用程序的各个部分重复使用。
Widget getTextField({required String hint,required IconData icon, required int minLength,required StringValue callback}){
return CupertinoTextField(
padding: EdgeInsets.all(8),
prefix: Padding(
padding: iconPadding,
child: Icon(icon)),
suffix: Padding(
padding: iconPadding,
child: Icon(_length >= minLength ? Icons.check_circle : Icons.check_circle_outline)),
placeholder: hint,
onChanged: (text){
_length = text.length;
callback(text);
},
);
}
当我尝试重用一个状态完整的小部件时,我遇到了一个问题,如果我在一个文本字段中键入,其余的文本会弹出相同的文本,这意味着正在使用相同的小部件实例。使用 new 关键字也没有帮助。
上述方法如https://stackoverflow.com/a/63424310/8528047这里提到的那样工作
但是,当布尔值_length 变为真时,图标并没有改变。
当布尔条件发生变化时,如何使小部件自行重建?
【问题讨论】:
-
你试过callBack方法了吗,如果你的函数在不同的小部件上,如果在同一个小部件上,你会得到
setstate()。我也更喜欢stateManagement -
什么回调方法?你能解释一下吗?
-
喜欢使用函数作为参数并将其添加到
onChanged -
不知道我会怎么做。你能发布一个答案吗?