Flutter getx - 使用 recative 列表作为参数会导致错误使用 getx

Flutter getx - using recative list as argument gives imporper use of getx error

我有带 RxList 的 GetXController, 当我使用列表作为参数创建小部件时(这是唯一可观察到的),我得到一个错误

[Get] the improper use of a GetX has been detected. 

控制器看起来像这样:

class Controller extends GetxController {
  static Controller get to => Get.find();
  final RxList<int> numbers = <int>[].obs;
}

用法是这样的:

class ShowWidget extends StatelessWidget {
  ShowWidget({Key? key}) : super(key: key);
  final Controller c = Controller.to;

  @override
  Widget build(BuildContext context) {
    return Container(
      height: 300,
      width: 300,
      color: Colors.red,
      child: (Obx(
        () => ItemsList(numbers: c.numbers),
      )),
    );
  }
}

如果我添加列表长度作为参数,它似乎工作正常,但我试图了解为什么这不起作用。

完整示例在这里https://pastebin.com/WrQqqsPx

感谢您的帮助。

尽管列表默认为 Rx(因此不需要 .value 到 call/do 操作),但如果在观察者小部件上观察它们 (Obx ,GetX) 您要么必须访问它们的元素,要么 invoke/call 任何 methods/properties。因为在您这样做之前,它们仍然是 Rx 引用(如 Stream)。只有在使用它们的实际值时才会观察到它们。这很像 boxed/un-awaited Future.

因此,您可以这样做:

Obx(() => ItemsList(numbers: c.numbers.toList())),

或:

Obx(() => ItemsList(numbers: c.numbers.call())),

虽然我更喜欢打电话给 .toList()