Flutter 从togglebutton获取字符串值

Flutter 从togglebutton获取字符串值,flutter,dart,Flutter,Dart,我创建了由三个选项组成的切换按钮,每个选项都有不同的文本。用户只能从三个选项中选择一个选项,在本例中标识其性别。我想将所选选项作为字符串传递到下一页 如何从选择中获取字符串形式的值 到目前为止,我的代码是: 列表被选中; //初始化性别按钮切换的设置状态 @凌驾 void initState(){ isSelected=[假,假,假]; super.initState(); } final genderToggleButtons=容器( 宽度:mq.size.width, 填充:EdgeIns

我创建了由三个选项组成的
切换按钮
,每个选项都有不同的文本。用户只能从三个选项中选择一个选项,在本例中标识其性别。我想将所选选项作为字符串传递到下一页

如何从选择中获取字符串形式的值

到目前为止,我的代码是:

列表被选中;
//初始化性别按钮切换的设置状态
@凌驾
void initState(){
isSelected=[假,假,假];
super.initState();
}
final genderToggleButtons=容器(
宽度:mq.size.width,
填充:EdgeInsets.zero,
装饰:盒子装饰(
颜色:AppTheme.define().accentColor,
borderRadius:borderRadius.all(
圆形半径(10.0),
),
),
子:布局生成器(
生成器:(上下文、约束){
返回切换按钮(
渲染器顺序:false,
颜色:颜色,白色,
约束:BoxConstraints.expand(宽度:constraints.maxWidth/3),
fillColor:AppTheme.define().primaryColor,
selectedColor:Colors.white,
边界半径:边界半径。圆形(10),
儿童:[
填充物(
填充:常数边集全部(27.0),
子:文本(
“男性”,
样式:TextStyle(
字体大小:17.0,
fontFamily:“机器人神经”,
),
),
),
填充物(
填充:常数边集全部(1.0),
子:文本(
“女性”,
样式:TextStyle(
字体大小:17.0,
fontFamily:“机器人神经”,
),
),
),
填充物(
填充:常数边集全部(1.0),
子:文本(
“非二进制”,
样式:TextStyle(
字体大小:17.0,
fontFamily:“机器人神经”,
),
),
),
],
onPressed:(int索引){
设定状态(
() {
对于(int buttonIndex=0;
按钮索引);任何时候,只要你想开始向页面传递数据,这实际上是任何真正的应用程序,你都会想要实现一个状态管理解决方案。下面是我如何使用

类似的解决方案可用于几乎任何其他州管理,如提供商、Riverpod、Bloc等

下面是一个类,在该类中,字符串将根据
ToggleButton
选择进行存储和更新

class Controller extends GetxController {
  String gender = '';

  void selectGender(int index) {
    if (index == 0) {
      gender = 'male';
    } else if (index == 1) {
      gender = 'female';
    } else if (index == 2) {
      gender = 'non-binary';
    }
    update();
  }
}
使用
ToggleButton
将其加入到页面的构建方法中。这将初始化GetxController

final controller = Get.put(Controller());
您的
onPressed
的for循环现在如下所示

 for (int buttonIndex = 0;
      buttonIndex < isSelected.length;
      buttonIndex++) {
     if (buttonIndex == index) {
      isSelected[buttonIndex] = true;
      controller.selectGender(index); // calling method from GetX Controller class
      _enableBtn = true;
     } else {
       isSelected[buttonIndex] = false;
       }
      }
for(int按钮索引=0;
按钮索引
下面是一个示例,说明如何从应用程序中的任何其他位置访问该字符串。同样的概念也适用于该类中的任何其他变量

class Page2 extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    final controller =
        Get.find<Controller>(); // finding same instance of controller
    return Scaffold(
      body: Center(
        // this GetBuilder widget rebuilds based on any updates to the GetX variable inside
        child: GetBuilder<Controller>(
          builder: (_) {
            return Text(controller.gender);
          },
        ),
      ),
    );
  }
}
class Page2扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
最终控制员=
Get.find();//查找控制器的相同实例
返回脚手架(
正文:中(
//此GetBuilder小部件基于对内部GetX变量的任何更新进行重建
孩子:GetBuilder(
建筑商:(){
返回文本(controller.gender);
},
),
),
);
}
}