【问题标题】:A value of type 'Rx<Future<List<SectionsDBStat>>*>*' can't be assigned to a variable of type'Rx<Future<List<SectionsDBStat>>*>*' 类型的值不能分配给类型变量
【发布时间】:2021-02-26 11:40:35
【问题描述】:

我正在学习 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.

【问题讨论】:

    标签: flutter dart flutter-getx


    【解决方案1】:

    我不知道你为什么要使用 Future,在这里你试图将 Rx&lt;Future&lt;List&lt;SectionsDBStat&gt;&gt;*&gt; 分配给 sectionsDBStat,这是不可能的

    替换这一行

    SectionsDBStat sectionsDBStat = Future.value(<SectionsDBStat>).obs;
    

    有了这个

    final sectionsDBStat = SectionsDBStat().obs;
    

    然后像这样分配它

    sectionsDBStat.value = SectionsDBStat.fromJson(valueMap);
    

    【讨论】:

    • 感谢您的回复,欢迎来到 SO!但我在SectionsDBStat().obs; 上遇到错误,因为它的构造函数需要数据。
    • 试试这个final sectionsDBStat = Rx&lt;SectionsDBStat&gt;(null);
    猜你喜欢
    • 2021-08-29
    • 2020-06-01
    • 2020-10-24
    • 2021-10-08
    • 1970-01-01
    • 2023-01-20
    • 2021-12-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多