Flutter 颤振模式底板状态(单选按钮)

Flutter 颤振模式底板状态(单选按钮),flutter,radio-button,flutter-showmodalbottomsheet,Flutter,Radio Button,Flutter Showmodalbottomsheet,当我使用单选按钮时,我无法在modalBottomSheet中更新我的状态。当我更改单选按钮时,我正在从服务器检索数据,并希望更新状态 这是我的密码 这里我称之为modalBottomSheet: GestureDetector( onTap: () { showModalBottomSheet( context: context, builder: buildBottomSheet); },

当我使用单选按钮时,我无法在modalBottomSheet中更新我的状态。当我更改单选按钮时,我正在从服务器检索数据,并希望更新状态

这是我的密码

这里我称之为modalBottomSheet:

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也不例外