Значение типа 'Rx <Future <List <SectionsDBStat>> *> *' не может быть присвоено переменной типа
Я изучаю 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'])
);
}
}
Я пытаюсь создать контроллер Getx, который получает данные из http:
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.
1 ответ
Решение
Я не знаю, почему вы используете Future, здесь вы пытаетесь назначить
Rx<Future<List<SectionsDBStat>>*>
к
sectionsDBStat
и это невозможно
Заменить эту строку
SectionsDBStat sectionsDBStat = Future.value(<SectionsDBStat>).obs;
с этим
final sectionsDBStat = SectionsDBStat().obs;
а затем назначьте его так
sectionsDBStat.value = SectionsDBStat.fromJson(valueMap);