【发布时间】:2020-07-19 20:08:29
【问题描述】:
我有类似的情况,其中小部件的颜色取决于布尔值,当您点击小部件时,布尔值会翻转。但我也想初始化 bool,对于不同的小部件实例,它会有所不同。我尝试了这样的方法,其中StatefulWidget 类包含初始值initBool,在initState 中用于设置myBool。
它似乎有效(但老实说,我不确定,因为我遇到了一个奇怪的错误,但我不知道它是否相关),但感觉有点笨拙,所以我想知道是否在 Flutter 中有更合适的方法来做到这一点。谢谢!
class MyBox extends StatefulWidget {
final bool initBool;
MyBox(this.initBool);
@override
_MyBoxState createState() => _MyBoxState();
}
class _MyBoxState extends State<MyBox> {
bool myBool;
@override
void initState() {
super.initState();
myBool = widget.initBool;
}
@override
Widget build(BuildContext context) {
return InkWell(
child: Container(
color: myBool ? Colors.green : Colors.red
),
onTap: () {
setState(() {
myBool = !myBool;
});
},
);
}
}
【问题讨论】:
-
您目前拥有的有什么问题?
-
@ChristopherMoore 只为初始值设置一个单独的变量感觉有点粗略,所以我想咨询更有经验的 Flutter 用户,看看在使用时是否有基于最佳实践的更好方法StatefulWidget。
-
你目前拥有的一切都很好。