Значение типа '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);
Другие вопросы по тегам