Flutter - GetX:列表文字类型 'List<Item>' 不是预期的类型 'RxList<Item>'

时间:2021-07-03 16:05:24

标签: flutter getx flutter-getx

我是 Flutter 的初学者。我正在制作一种购物清单应用程序。 使用本教程 https://www.youtube.com/watch?v=ZnevdXDH25Q 我正在尝试使用 GetX 进行状态管理。

我有一个名为“Items”的类,它有一些属性。我创建了一个项目列表,稍后将显示为卡片。

我无法理解这一点。

这是我现在工作的课程的代码。

class ItemsController extends GetxController {
  RxList<Item> items = [].obs;

  @override
  void onInit() {
    super.onInit();
    loadItems();
  }

  loadItems() {
    items = [
      Item(
        name: 'olio',
        description: '',
        quantity: 1,
      ),
      Item(
        name: 'mozzarella',
        description: 'di bufala',
        quantity: 4,
      ),
    ];

    items.assignAll(items);
  }
}

我几乎尝试了所有可能的方法,但每次 Android Studio 都会出现此错误: 列表文字类型“List”不是预期的类型“RxList”。

我也尝试将 .cast<Item>(); 附加到“items”列表,但我收到了消息

type 'RxList<dynamic>' is not a subtype of type 'RxList<Item>'

2 个答案:

答案 0 :(得分:1)

  • 您已经为 RxList 分配了一个列表,因此将其更改为
  RxList<Item> items = <Item>[].obs;

或者只是

  var items = [].obs;
  • 在 loadItems 函数中,您已为 RxList 分配了一个列表,因此更改如下
  loadItems() {
    List<Item> newItems = [
      Item(
        name: 'olio',
        description: '',
        quantity: 1,
      ),
      Item(
        name: 'mozzarella',
        description: 'di bufala',
        quantity: 4,
      ),
    ];
    items.assignAll(newItems);
  }

或者干脆

  loadItems() {
    items.assignAll([
      Item(
        name: 'olio',
        description: '',
        quantity: 1,
      ),
      Item(
        name: 'mozzarella',
        description: 'di bufala',
        quantity: 4,
      ),
    ]);
  }

一开始有点混乱,但你会一点一点地得到

答案 1 :(得分:0)

忘记导入

import 'package:get/get.dart';

所以只需添加这一行 .obs 就可以了