单击时该值有效更改,但动画不显示:
这是我的代码:
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,
...
我正在将相同的上下文传递给小部件:/
答案 0 :(得分:1)
setState
会更改该值,但不会在onPressed
的{{1}}上调用它来重建您的底页。您当然不会再次调用该FlatButton
,但是您也不想这样做。
正如我在评论中提到的,onPressed
可以胜任。
一个有效的例子
StatefulBuilder
答案 1 :(得分:0)
如@ 10101010所评论,您必须使用一个有状态的小部件。在_femaleChanged和_maleChanged中,您必须使用setState()。示例:
void _femaleChanged(bool value) => setState(() => _female = value);