Flutter 颤振模式底板状态(单选按钮)
当我使用单选按钮时,我无法在modalBottomSheet中更新我的状态。当我更改单选按钮时,我正在从服务器检索数据,并希望更新状态 这是我的密码 这里我称之为modalBottomSheet:Flutter 颤振模式底板状态(单选按钮),flutter,radio-button,flutter-showmodalbottomsheet,Flutter,Radio Button,Flutter Showmodalbottomsheet,当我使用单选按钮时,我无法在modalBottomSheet中更新我的状态。当我更改单选按钮时,我正在从服务器检索数据,并希望更新状态 这是我的密码 这里我称之为modalBottomSheet: GestureDetector( onTap: () { showModalBottomSheet( context: context, builder: buildBottomSheet); },
GestureDetector(
onTap: () {
showModalBottomSheet(
context: context,
builder:
buildBottomSheet);
},
child: ListTile(
leading: Icon(
Icons.shopping_basket),
title:
Text("choose bag type "),
),
),
这是我的modalbottomSheet和包含单选按钮的容器
Widget buildBottomSheet(BuildContext context) {
return StatefulBuilder(builder: (BuildContext context, StateSetter state) {
return Container(
color: Color(0xff757575),
child: Container(
height: MediaQuery.of(context).size.height / 4,
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.only(
topLeft: Radius.circular(25), topRight: Radius.circular(25))),
child: Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: <Widget>[
SizedBox(height: 25),
RadioListTile(
groupValue: _con.cart.bagType,
title: Row(
children: <Widget>[
Expanded(
flex: 3,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Text(
S.of(context).plastic_bag +
" (" +
_con.cart.plasticBagCount.toString() +
" X " +
_con.cart.plasticBagUnitPrice.toString() +
")",
style: Theme.of(context).textTheme.body1,
overflow: TextOverflow.ellipsis,
maxLines: 1,
),
],
),
),
Expanded(
flex: 1,
child: Image.asset("assets/img/business.png",
height: 25, color: Colors.grey),
)
],
),
value: 1,
onChanged: (val) {
state(() {
selectedBagType = val;
});
_con.cart.bagType = val;
print("BBBBBBBBBBBBBBBBBBBBBBBBBB" + val.toString());
_con.listenForBagTypeChange();
},
),
RadioListTile(
groupValue: _con.cart.bagType,
title: Row(
children: <Widget>[
Expanded(
flex: 3,
child: Text(
S.of(context).reusable_bag +
" (" +
_con.cart.reusableBagCount.toString() +
" X " +
_con.cart.reusableBagUnitPrice.toString() +
")",
style: Theme.of(context).textTheme.body1,
overflow: TextOverflow.ellipsis,
maxLines: 1,
),
),
Expanded(
flex: 1,
child: InkWell(
child: Icon(
Icons.shopping_basket,
color: Colors.grey,
size: 30.0,
),
),
)
],
),
value: 2,
onChanged: (val) {
state(() {
selectedBagType = val;
});
_con.cart.bagType = val;
print("AAAAAAAAAAAAAAAAAAAA" + val.toString());
_con.listenForBagTypeChange();
},
),
],
),
),
);
});
}
Widget buildBottomSheet(BuildContext上下文){
返回StatefulBuilder(生成器:(BuildContext上下文,StateSetter状态){
返回容器(
颜色:颜色(0xFF7575),
子:容器(
高度:MediaQuery.of(context).size.height/4,
装饰:盒子装饰(
颜色:颜色,白色,
borderRadius:仅限borderRadius(
左上:半径。圆形(25),右上:半径。圆形(25)),
子:列(
crossAxisAlignment:crossAxisAlignment.stretch,
儿童:[
尺寸箱(高度:25),
放射科医师(
groupValue:_con.cart.bagType,
标题:世界其他地区(
儿童:[
扩大(
弹性:3,
子:列(
crossAxisAlignment:crossAxisAlignment.start,
儿童:[
正文(
美国(上下文)。塑料袋+
" (" +
_con.cart.plasticBagCount.toString()+
“X”+
_con.cart.plasticBagUnitPrice.toString()+
")",
样式:Theme.of(context).textTheme.body1,
溢出:TextOverflow.省略号,
maxLines:1,
),
],
),
),
扩大(
弹性:1,
子项:Image.asset(“assets/img/business.png”,
身高:25,颜色:颜色。灰色),
)
],
),
价值:1,
一旦更改:(val){
国家(){
selectedBagType=val;
});
_con.cart.bagType=val;
打印(“bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb;
_con.listenForBagTypeChange();
},
),
放射科医师(
groupValue:_con.cart.bagType,
标题:世界其他地区(
儿童:[
扩大(
弹性:3,
子:文本(
可重复使用的包装袋+
" (" +
_con.cart.reusableBagCount.toString()的+
“X”+
_con.cart.reusableBagUnitPrice.toString()+
")",
样式:Theme.of(context).textTheme.body1,
溢出:TextOverflow.省略号,
maxLines:1,
),
),
扩大(
弹性:1,
孩子:InkWell(
子:图标(
图标、购物篮、,
颜色:颜色。灰色,
尺寸:30.0,
),
),
)
],
),
价值:2,
一旦更改:(val){
国家(){
selectedBagType=val;
});
_con.cart.bagType=val;
打印(“aaaaaaaaaaaaaaaa”+val.toString());
_con.listenForBagTypeChange();
},
),
],
),
),
);
});
}
请任何人帮忙?状态((){selectedBagType=val;});在这里,使用setState()。我已经尝试过setState,但它完全不起作用。您是否遇到任何错误?你能发布完整的dart文件吗?不,我没有收到任何错误,只是状态没有在modalBottomSheet内更新。抱歉,文件太大,stackoverflow也不例外,它的状态((){selectedBagType=val;});在这里,使用setState()。我已经尝试过setState,但它完全不起作用。您是否遇到任何错误?你能发布完整的dart文件吗?不,我没有收到任何错误,只是状态没有在modalBottomSheet内更新。抱歉,文件太大,stackoverflow也不例外