Flutter-复选框动画不显示

时间:2019-07-15 07:43:18

标签: flutter dart

单击时该值有效更改,但动画不显示:

enter image description here

这是我的代码:

 var editGender = Padding(
      padding: const EdgeInsets.only(top: 12.0),
      child: Column(
        children: <Widget>[
          CheckboxListTile(
            value: _male,
            onChanged: _maleChanged,
            title: Text("Male"),
            activeColor: Theme.of(context).primaryColor,
          ),
          CheckboxListTile(
            value: _female,
            onChanged: _femaleChanged,
            title: Text("Female"),
            activeColor: Theme.of(context).primaryColor,
          )  
        ],
      ),
    );

点击编辑按钮时:

    FlatButton(
      onPressed: (){
          buildShowRoundedModalBottomSheet(context, title, editGender, option);
      },
      child: Text('Edit'),

它显示了底页:

Future buildShowRoundedModalBottomSheet(BuildContext context, String title, Widget content,[String date]) {
    return showRoundedModalBottomSheet(
        context: context,
        radius: 20.0,
        builder: (context){

          return Padding(
            padding: const EdgeInsets.only(top: 20.0, bottom: 20.0, left: 20.0, right: 20.0),
            child: Column(
              crossAxisAlignment: CrossAxisAlignment.start,
              mainAxisSize: MainAxisSize.min,
              children: <Widget>[
                Text(
                  title,
                  style: TextStyle(
                    fontFamily: 'SamsungSans',
                    fontSize: 20.0,
                  ),
                ),
                content,
                ...

我正在将相同的上下文传递给小部件:/

2 个答案:

答案 0 :(得分:1)

setState会更改该值,但不会在onPressed的{​​{1}}上调用它来重建您的底页。您当然不会再次调用该FlatButton,但是您也不想这样做。

正如我在评论中提到的,onPressed可以胜任。

一个有效的例子

StatefulBuilder

bottomsheet

答案 1 :(得分:0)

如@ 10101010所评论,您必须使用一个有状态的小部件。在_femaleChanged和_maleChanged中,您必须使用setState()。示例:

void _femaleChanged(bool value) =>  setState(() => _female = value);