2

我正在使用带有 GetX 插件的 Flutter,并且我在 statelessWidget 中有两个单选按钮,但是当用户单击它时单选按钮不会更改为选中我的问题是如何更新屏幕以显示使用 GetX pluing 更改的 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;
}
4

3 回答 3

2

我通过将 Radio 小部件包装在 Obx() 函数中来解决它,如下所示

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


                                },
               ))
于 2021-01-26T05:21:47.930 回答
0

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

我的控制器:

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

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

我的查看代码:

          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)
      ],
    );
  }

要使用,请调用 addRadioButton:

          Row(
            children: [
              addRadioButton(0, "Male"),
              addRadioButton(1, "Female"),
            ],
          ),
于 2021-06-05T10:16:38.570 回答
-3

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

于 2021-01-25T08:31:36.023 回答