【发布时间】:2020-01-28 15:47:35
【问题描述】:
我正在遍历地图并在底部工作表中创建一个单选按钮,在我的仪表板中,我有“...”按钮,一旦单击它就会打开底部工作表。(在我的仪表板中,我正在调用 DashboardFilter 类存在于filter.dart 文件,带底部表,
下面是filter.dart文件
class DashboardFilter extends StatefulWidget {
@override
_DashboardFilterState createState() => _DashboardFilterState();
final ValueChanged<Map<String, bool>> parentAction;
final ValueChanged<Map<String, bool>> childAction;
int radioValue1 = -1;
DashboardFilter(
{Key key,
this.parentAction,
this.childAction,
})
: super(key: key);
}
class _DashboardFilterState extends State<DashboardFilter> {
void showModalSheet() {
List<Map<String, Object>> timeData;
timeData = [
{"id": 1, "displayId": "Daily"},
{"id": 2, "displayId": "Weekly"},
{"id": 3, "displayId": "Monthly"}
];
showModalBottomSheet<void>(
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(10.0),
),
context: context,
builder: (BuildContext context) {
return StatefulBuilder(
builder: (BuildContext context, StateSetter state) {
return createBox(context, timeData, state);
});
});
}
createBox(BuildContext context,
List<Map<String, Object>> tickbox, StateSetter state) {
DateTime toDate;
DateTime fromDate;
var tickboxdata = tickbox.map<Widget>((data) {
int id = data["id"];
var dispId = data["displayId"];
return radiogen(context, id, dispId);
}).toList();
return SingleChildScrollView(
child: LimitedBox(
child: Column(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Container(
child: Column(
children: tickboxdata,
),),], ), ), );
}
void _handleRadioValueChange1(int value) {
setState(() {
widget.radioValue1 = value;
switch (widget.radioValue1) {
case 1:
print("1 selected");
break;
case 2:
break;
case 3:
break;
}
});
}
Widget radiogen(BuildContext context, int id, var disp) {
return Container(
padding: EdgeInsets.all(8.0),
child: new Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
new Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
new Radio(
value: id,
groupValue: widget.radioValue1,
onChanged: _handleRadioValueChange1,
),
new Text(
disp,
style: new TextStyle(fontSize: 16.0),
), ], ), ], ), );
}
@override
Widget build(BuildContext context) {
return Container(
child: IconButton(
icon: new Icon(Icons.more_horiz), onPressed: showModalSheet),
);
}
}
我面临的问题是,一旦我选择了单选按钮,它没有显示当时选择了哪个项目,我再次需要返回并再次按下 (...) 按钮,然后它显示该选项是已选中。
谁能帮我解决这个问题,
我认为问题出在 setState 上,如果有任何更改要告诉我吗?
【问题讨论】:
标签: flutter