Flutter 如何使用getx StateManagement更新颤振中选定的单选按钮
我正在使用带有GetX插件的flatter,在这个小部件中有两个单选按钮 但当用户单击单选按钮时,它并没有变为选中 我的问题是如何更新屏幕以显示使用GetX Pling更改的groupValue属性。 这是我的密码Flutter 如何使用getx StateManagement更新颤振中选定的单选按钮,flutter,state-management,flutter-getx,Flutter,State Management,Flutter Getx,我正在使用带有GetX插件的flatter,在这个小部件中有两个单选按钮 但当用户单击单选按钮时,它并没有变为选中 我的问题是如何更新屏幕以显示使用GetX Pling更改的groupValue属性。 这是我的密码 Radio( value: reportController.period[0], groupValue: reportController.selectedPeriod, onChanged: (val) { reportCon
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;
}
import'package:get/get.dart';
导入“包:ycom/models/report.dart”;
类ReportController扩展了GetxController{
var report=report().obs;
列表期间=[“晚上”、“早上”];
无效设置selectedPeriod(字符串selectedPeriod){
报告。更新((报告){
report.selectedPeriod=selectedPeriod;
});
}
字符串get selectedPeriod=>report.value.selectedPeriod;
}
试试{setState((){reportController.selectedPeriod=val;});}
相反,{reportController.selectedPeriod=val;},我通过在Obx()函数中包装Radio小部件解决了它,如下所示
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();
}
}
setState在无状态小部件中不起作用,我正在使用getX插件进行状态管理。根据本文档,您需要使用setState来更新收音机的视图。您可以更改设置或获取数据的方式,因为您无法在无状态管理器中更新视图。阅读此GetX插件可以做到这一点,因为它管理状态,您可以使用它来代替有状态小部件和更新小部件。我只是不知道什么是代码或方法可以处理字符串值使用SharedReference
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)
],
);
}
Row(
children: [
addRadioButton(0, "Male"),
addRadioButton(1, "Female"),
],
),