如何使用 getx statemanagment 在 flutter 中更新选定的单选按钮
how to update selected radio button in flutter using getx statemanagment
我正在使用带有 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;
}
尝试 {setState(() {reportController.selectedPeriod = val;});}
而不是 {reportController.selectedPeriod = val;},
我通过将 Radio 小部件包装在 Obx() 函数中解决了这个问题,如下所示
Obx(() => Radio(
value: reportController.period[0],
groupValue: reportController.selectedPeriod,
onChanged: (val) {
reportController.selectedPeriod = val;
},
))
这是我为实现这一目标所做的工作:
我的控制器:
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"),
],
),
我正在使用带有 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;
}
尝试 {setState(() {reportController.selectedPeriod = val;});}
而不是 {reportController.selectedPeriod = val;},
我通过将 Radio 小部件包装在 Obx() 函数中解决了这个问题,如下所示
Obx(() => Radio(
value: reportController.period[0],
groupValue: reportController.selectedPeriod,
onChanged: (val) {
reportController.selectedPeriod = val;
},
))
这是我为实现这一目标所做的工作:
我的控制器:
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"),
],
),