【发布时间】:2019-11-14 13:22:51
【问题描述】:
我正在尝试学习 Flutter 中的复选框。
问题是,当我想在 Scaffold(body:) 中使用复选框时,它正在工作。但我想在不同的地方使用它,比如 ListView 中的一个项目。
return Center(
child: Checkbox(
value: testValue,
onChanged: (bool value) {
setState() {
testValue = value;
}
},
));
但它不起作用,更新和改变任何东西。
编辑:我通过将复选框放入 StatefulBuilder 解决了我的问题。感谢@cristianbregant
return StatefulBuilder(
builder: (BuildContext context, StateSetter setState) {
return Center(
child: CheckboxListTile(
title: const Text('Animate Slowly'),
value: _valueCheck,
onChanged: (bool value) {
setState(() {
_valueCheck = value;
});
},
secondary: const Icon(Icons.hourglass_empty),
),
);
});
【问题讨论】:
-
在 ListView 中,您必须重建所有列表才能看到您的更改
-
不工作,是否意味着您在控制台中收到错误消息?如果是这样,您可以将其添加到您的问题中
-
你是说 setState() 吗? @Caffo17
-
不,只是没有任何反应复选框没有在 ui @Nolence 中更新自身
-
@developer.alp 我更好地解释了我的意思。如果你想要一个复选框列表,你必须跟踪所有的布尔值。您可以通过 List
来实现。在初始状态,该列表充满了错误。在 ListView 的构建中,您拥有列表中单个元素的索引。当你点击一个复选框时,你必须调用 setState((){ _list[index] = !oldValue })。这使您可以使用新值重建列表。如果您需要,我可以在下面发布一个示例。
标签: flutter dart flutter-layout