颤振复选框不起作用
Posted
技术标签:
【中文标题】颤振复选框不起作用【英文标题】:flutter checkbox doesn't work 【发布时间】:2019-01-05 19:26:50 【问题描述】:我想在这个小部件对话框中使用CheckboxListTile
构建一个复选框,但是当我点击复选框时,复选框上的checked
不会改变。
这是我的代码:
Future<Null> _showGroupDialog(BuildContext context) async
await showDialog(
context: context,
builder: (BuildContext dialogContext) =>
Dialog(child: _buildCheckboxGroups(context)));
Widget _buildCheckboxGroups(BuildContext context)
List<Widget> childrens = List.generate(_groups.length, (index)
return CheckboxListTile(
title: Text(_groups[index].name),
value: _groups[index].checked,
onChanged: (bool val)
setState(()
_groups[index].checked = val;
);
,
);
);
return Container(
child: Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.stretch,
children: childrens,
));
顺便说一句,当我点击复选框时会调用 onChange
方法。谁能解决这个问题?
【问题讨论】:
参见github.com/flutter/flutter/issues/15194 - 您正在调用 setState 来更新构建对话框的小部件,而不是对话框本身。 【参考方案1】:class _MyHomePageState extends State<MyHomePage>
//<Here you have to set default value for _groups[index].checked to false/true>
@override
Widget _buildCheckboxGroups(BuildContext context)
List<Widget> childrens = List.generate(_groups.length, (index)
return CheckboxListTile(
title: Text(_groups[index].name),
value: _groups[index].checked,
onChanged: (bool val)
setState(()
_groups[index].checked = val;
);
,
);
);
下面给出了工作示例
class _MyHomePageState extends State<MyHomePage>
bool flagWarranty=false;
@override
Widget build(BuildContext context)
return Scaffold(
appBar: AppBar(title: Text(widget.title)),
body: new Container(
padding: new EdgeInsets.all(20.0),
child: new Form(
key: this._formKey,
child: new ListView(
children: <Widget>[
new Checkbox(
value: flagWarranty,
onChanged: (bool value)
setState((
)
flagWarranty=value;
);
,
)
],),)));
【讨论】:
以上是关于颤振复选框不起作用的主要内容,如果未能解决你的问题,请参考以下文章