flutter - Flutter 和 GetX - 当我更新我的 RxObject 时,小部件不会重绘
问题描述
这里存在:
我的问题控制器
Rx<GitlabIssue> selectedIssue = new GitlabIssue().obs;
RxList<GitlabIssue> issues = <GitlabIssue>[].obs;
void changeIssueState(GitlabIssueState state) async {
var stateValue = _getGitLabIssueStateValue(state);
bool isInternet = await Utils().isInternet();
if (isInternet) {
var resp = await _issueProvider.changeGitlabIssueState(
projectId, selectedIssue.value.iid, stateValue);
if (resp.statusCode == 200) {
Get.snackbar(
'Issue state changed',
'Issue is $stateValue',
);
var issueIndex = issues.indexOf(selectedIssue.value);
selectedIssue.value.state =
selectedIssue.value.state == 'opened' ? 'closed' : 'opened';
issues[issueIndex] = selectedIssue.value;
gitLabIssueBox.put(projectId, issues);
} else
Get.snackbar(
'Issue state not changed', 'Issue state was not correctly changed');
} else
print('No connectivity');
}
我的观点
Widget _getButtonStatus() {
return Obx(() {
Color stateColor = _issueController.selectedIssue.value.state == 'closed'
? Colors.green
: Colors.red;
return OutlinedButton(
onPressed: () {
_issueController.selectedIssue.value.state == 'closed'
? _issueController.changeIssueState(GitlabIssueState.reopen)
: _issueController.changeIssueState(GitlabIssueState.close);
},
style: OutlinedButton.styleFrom(
//primary: Colors.white,
//backgroundColor: Colors.teal,
side: BorderSide(color: stateColor, width: 1),
),
child: Obx(
() => Text(
_issueController.selectedIssue.value.state == 'closed'
? 'Reopen issue'
: 'Close issue',
style: TextStyle(color: stateColor),
),
),
);
});
}
我更新了 selectedIssue.obs 的值,并将小部件放入 Obx() => 函数中。
我不知道为什么我的小部件不重绘。
奇怪的是,我的 onPressed 函数表现正确;该按钮保持不变,但如果我再次单击它,我的问题状态会正确更改。
请帮我 !!:D
解决方案
推荐阅读
- html - 指针光标不显示
- sql - 存储过程停止工作并重新编译修复它
- java - 将光栅化器的像素链接到我的 JavaFX 应用程序的画布
- excel - VBScript(不是 VBA)将 Excel 中的复选框添加到特定单元格
- javascript - 在 mobX 中,一个 store 可以“监听”另一个 store,并在另一个 store 发生变化时执行查询?
- kentico - 如何在 Kentico 11 中隐藏媒体库。
- django - 无法加载 Boto3 的 S3 绑定
- c - 如何根据C中的价格对输入的给定等级的酒店进行排序?
- dart - 使用两个组合流创建 RxCommand
- css-selectors - 如何检查具有特定文本的锚点是否存在?