问题描述
我正在使用带有 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)
],);
}