web-dev-qa-db-ja.com

フラッターチェックボックスが機能しない

このウィジェットダイアログ内に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メソッドが呼び出されます。誰かがこれを解決できますか?

5
cahyowhy
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;
                });
              },
            )
       ],),)));
 }}
0
lavish