Flutter 颤振:模式表中的单选按钮,如下所示

Flutter 颤振:模式表中的单选按钮,如下所示,flutter,dart,Flutter,Dart,如何在颤振模式表中创建这样的单选按钮组?这是一张显示这个的图片 先谢谢你 class MyHomePage extends StatefulWidget { @override _MyHomePageState createState() => new _MyHomePageState(); } class _MyHomePageState extends State<MyHomePage> { void _showModalSheet() { showModalBotto

如何在颤振模式表中创建这样的单选按钮组?这是一张显示这个的图片

先谢谢你

class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => new _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {

void _showModalSheet() {
showModalBottomSheet(
    context: context,
    builder: (builder) {
      return new Container(
        height: 300,
        child: new Column(
          children: <Widget>[
            Row(
              children: <Widget>[
                Padding(
                  padding: const EdgeInsets.only(top: 20.0, left: 10.0, bottom: 20.0),
                  child: Text("Please Choose", style: TextStyle(fontWeight: FontWeight.bold, fontSize: 18.0),),
                ),
              ],
            ),
            Divider(height: 20.0, color: Colors.grey,),
            Row(
                children: <Widget>[
                  Text("Mutton Bone Curry"),
                  Spacer(),
                  new Radio(
                    onChanged: (int e) => something(e),
                    activeColor: Colors.blue,
                    value: 1,
                    groupValue: groupValue,
                  ),
                ],
              ),
            Row(
              children: <Widget>[
                Text("Vegetable Kuruma"),
                Spacer(),
                new Radio(
                  onChanged: (int e) => something(e),
                  activeColor: Colors.blue,
                  value: 2,
                  groupValue: groupValue,
                ),
              ],
            ),
            Row(
              children: <Widget>[
                Text("Chicken Curry"),
                Spacer(),
                new Radio(
                  onChanged: (int e) => something(e),
                  activeColor: Colors.blue,
                  value: 3,
                  groupValue: groupValue,
                ),
              ],
            ),
          ],
        ),
      );
    });
  }

@override
int groupValue;
Widget build(BuildContext context) {
return new Scaffold(
  appBar: new AppBar(
    title: new Text("Flutter BottomSheet"),
  ),
  body: new Padding(
    padding: const EdgeInsets.all(20.0),
    child: new Center(
        child: new Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            new Padding(
              padding: const EdgeInsets.only(top: 10.0),
            ),
            new RaisedButton(
              onPressed: _showModalSheet,
              child: new Icon(Icons.control_point),
            ),
          ],
        )),
  ),
);
}

void something(int e) {
setState(() {
  if (e == 1) {
    groupValue = 1;
  } else if (e == 2) {
    groupValue = 2;
  } else if (e == 3) {
    groupValue = 3;
  }
});
}}
类MyHomePage扩展StatefulWidget{
@凌驾
_MyHomePageState createState()=>new_MyHomePageState();
}
类_MyHomePageState扩展状态{
void_showModalSheet(){
showModalBottomSheet(
上下文:上下文,
建筑商:(建筑商){
退回新货柜(
身高:300,
子:新列(
儿童:[
划船(
儿童:[
填充物(
填充:仅限常量边集(顶部:20.0,左侧:10.0,底部:20.0),
子项:文本(“请选择”,样式:TextStyle(fontWeight:fontWeight.bold,fontSize:18.0),
),
],
),
分隔器(高度:20.0,颜色:颜色。灰色,),
划船(
儿童:[
文字(“羊骨咖喱”),
垫片(),
新收音机(
一旦改变:(int e)=>某物(e),
activeColor:Colors.blue,
价值:1,
groupValue:groupValue,
),
],
),
划船(
儿童:[
文本(“蔬菜库鲁马”),
垫片(),
新收音机(
一旦改变:(int e)=>某物(e),
activeColor:Colors.blue,
价值:2,
groupValue:groupValue,
),
],
),
划船(
儿童:[
文本(“咖喱鸡”),
垫片(),
新收音机(
一旦改变:(int e)=>某物(e),
activeColor:Colors.blue,
价值:3,
groupValue:groupValue,
),
],
),
],
),
);
});
}
@凌驾
int-groupValue;
小部件构建(构建上下文){
归还新脚手架(
appBar:新的appBar(
标题:新文本(“颤振底板”),
),
车身:新衬垫(
填充:常数边集全部(20.0),
孩子:新中心(
子:新列(
mainAxisAlignment:mainAxisAlignment.center,
儿童:[
新填料(
填充:仅限常量边集(顶部:10.0),
),
新升起的按钮(
按下按钮:_showModalSheet,
子项:新图标(图标.控制点),
),
],
)),
),
);
}
使某物无效(inte){
设置状态(){
如果(e==1){
groupValue=1;
}else如果(e==2){
组值=2;
}如果(e==3),则为else{
组值=3;
}
});
}}

到目前为止,我已经能够做到这一点。唯一的问题是,一旦勾选了按钮,就无法立即看到更改。只有回到屏幕中央(控制点图标所在的位置)后才能看到它。

我遇到了与您相同的问题,我在StreamBuilder中处理了这个问题,因为我不想调用setState(){}来刷新整个页面


我复制/粘贴我的解决方案,它很简单,您将自己解决它我遇到了与您相同的问题,我在StreamBuilder中处理了这个问题,因为我不想调用setState(){}来刷新整个页面


我复制/粘贴我的解决方案,它很简单,你会自己找出你的问题/错误到底是什么?也许你必须研究一下,祝你好运,@ArnaudClaudel到目前为止我已经能够实现上面的代码,唯一的问题是,当你点击一个按钮时,它不会立即改变,你必须首先返回主屏幕,然后再次返回单选按钮以查看更改。你的问题/错误到底是什么?也许你必须仔细研究,祝你好运,@ArnaudClaudel到目前为止,我已经在那里实现了该代码,唯一的问题是,当您单击一个按钮时,它不会立即更改,您必须首先返回主屏幕,然后再次返回单选按钮以查看更改