flutter - 'Rx 类型的值>*>*' 不能分配给类型变量
问题描述
我正在学习 Flutter 和 GetX。我有模型:
class SectionsDBStat {
int notificationsTotalCount;
int notificationsWaitingForProcessing;
DateTime notificationsLastArchiveDate;
SectionsDBStat({
required this.notificationsTotalCount,
required this.notificationsWaitingForProcessing,
required this.notificationsLastArchiveDate
});
factory SectionsDBStat.fromJson(Map<String, dynamic> json) {
return SectionsDBStat(
notificationsTotalCount: json['notificationsTotalCount'],
notificationsWaitingForProcessing: json['notificationsWaitingForProcessing'],
notificationsLastArchiveDate: DateTime.parse(json['notificationsLastArchiveDate'])
);
}
}
我正在尝试创建从 http 接收数据的 Getx 控制器:
class SectionsStatController extends GetxController {
SectionsDBStat sectionsDBStat = Future.value(<SectionsDBStat>).obs;
getStat() async {
var value = await http.get('${url}/stat?total');
if(value.statusCode == 200) {
Map<String, dynamic> valueMap = jsonDecode(value.body)['data'];
sectionsDBStat = SectionsDBStat.fromJson(valueMap);
update();
} else {
print("Can't get stat: ${value.statusCode}");
}
}
}
我收到一个错误:
A value of type 'Rx<Future<List<SectionsDBStat>>*>*' can't be assigned to a variable of type 'SectionsDBStat'.
所以我应该使用另一种类型。但是什么?我试过final
但得到错误:
'sectionsDBStat' can't be used as a setter because it's final.
解决方案
我不知道你为什么使用 Future,在这里你试图分配Rx<Future<List<SectionsDBStat>>*>
,sectionsDBStat
这是不可能的
替换此行
SectionsDBStat sectionsDBStat = Future.value(<SectionsDBStat>).obs;
有了这个
final sectionsDBStat = SectionsDBStat().obs;
然后像这样分配它
sectionsDBStat.value = SectionsDBStat.fromJson(valueMap);
推荐阅读
- html - Bootstrap.4 如何让 div 内容高于导航
- android - CursorLoader 无法转换为 Loader
- angular - 消息:“未找到查看 [测试]。” 跟踪:[{文件:供应商\laravel\framework\src\Illuminate\View\FileViewFinder.php"
- vb.net - 在选定进程中查找所有窗口标题
- html - 如果窗口比例发生变化,我如何设置我的图像以调整大小和移动
- r - 使用 tidyverse 检查一个字符向量的元素与另一个字符向量的更好解决方案?
- c# - 如何通过组合两个字符串并使用替换来创建字符串?
- ruby-on-rails - 使用 devise_invitable 邀请用户时如何将用户分配到酒店
- c++ - insert() 不适用于 QMap 变量
- spring - replaceRate 和 BurstCapacity 有什么区别?