如何使用getx statemanagment更新flutter中选定的单选按钮

问题描述

我正在使用带有 GetX 插件的 Flutter,我在 statelessWidget 中有两个单选按钮 但是当用户单击单选按钮时,它不会更改为选中状态 我的问题是如何更新屏幕以显示使用 GetX 插入更改的 groupValue 属性的选定无线电。 这是我的代码

Radio(
  value: reportController.period[0],groupValue: reportController.selectedPeriod,onChanged: (val) {
                     reportController.selectedPeriod = val;
                              
                    },)

这是我的控制器

import 'package:get/get.dart';

import 'package:ycom/models/report.dart';

class ReportController extends GetxController {
  var report = Report().obs;
  List<String> period = ["evening","morning"];

  void set selectedPeriod(String selectedPeriod) {
    report.update((report) {
      report.selectedPeriod = selectedPeriod;
    });
  }

  String get selectedPeriod => report.value.selectedPeriod;
}

解决方法

我通过将 Radio 小部件包装在 Obx() 函数中解决了这个问题

Obx(() => Radio(
                 value: reportController.period[0],groupValue: reportController.selectedPeriod,onChanged: (val) {
                                   reportController.selectedPeriod = val;


                                },))
,

试试{setState(() {reportController.selectedPeriod = val;});}而不是{reportController.selectedPeriod = val;},

,

这是我为实现这一目标所做的:

我的控制器:

provider "kubernetes" {
  host                   = data.aws_eks_cluster.cluster.endpoint
  cluster_ca_certificate = base64decode(data.aws_eks_cluster.cluster.certificate_authority.0.data)
  token                  = data.aws_eks_cluster_auth.cluster.token
  config_path = local.kubectl_config_path
  config_context =  data.aws_eks_cluster.cluster.arn
}
##################################################################


data "aws_availability_zones" "available" {
}

locals {
  cluster_name = "Cluster-${random_string.suffix.result}"
  kubectl_config_path = "C:/Users/User/.kube/config"
}

我的查看代码:

      class ProfilePageController extends GetxController {
      String selectedGender;
      final List<String> gender = ["Male","Female"];

      String select;
      void onClickRadioButton(value) {
      print(value);
      select = value;
      update();
      }
     }

要使用,请调用 addRadioButton:

          Row addRadioButton(int btnIndex,String title) {
    return Row(
      mainAxisAlignment: MainAxisAlignment.start,children: <Widget>[
        GetBuilder<ProfilePageController>(
          builder: (_) => Radio(
              activeColor: Colors.blue,value: profilePageController.gender[btnIndex],groupValue: profilePageController.select,onChanged: (value) =>
                  profilePageController.onClickRadioButton(value)),),Text(title)
      ],);
  }

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...