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

Flutter - GetX: The list literal type 'List<Item>' isn't of expected type 'RxList<Item>'

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

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

我无法解决这个问题。

这是我现在正在处理的 class 的代码。

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>'
  • 您已将列表分配给 RxList,因此请将其更改为
  RxList<Item> items = <Item>[].obs;

或者只是

  var items = [].obs;
  • 在 loadItems 函数中,您已将 List 分配给 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,
      ),
    ]);
  }

一开始有点迷惑,但你会慢慢明白的

你忘了导入

import 'package:get/get.dart';

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