【问题标题】:Flutter getx - using recative list as argument gives imporper use of getx errorFlutter getx - 使用相对列表作为参数会导致错误使用 getx 错误
【发布时间】:2022-01-06 09:30:31
【问题描述】:

我有带 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

感谢您的帮助。

【问题讨论】:

    标签: flutter-getx


    【解决方案1】:

    虽然列表默认为Rx(因此不需要.value 来调用/执行操作),但如果在观察者小部件上观察它们(Obx,GetX),您要么必须访问他们的元素或调用/调用任何方法/属性。因为在您这样做之前,它们仍然是 Rx 引用(如 Stream)。只有在使用它们的实际值时才会观察到它们。这很像盒装/未等待的Future

    因此,您可以这样做:

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

    或者:

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

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

    【讨论】:

    • 感谢您的帮助!
    猜你喜欢
    • 2021-12-14
    • 2022-01-17
    • 2021-05-24
    • 2022-08-04
    • 2021-06-22
    • 2021-11-01
    • 2021-10-10
    • 2021-04-16
    • 1970-01-01
    相关资源
    最近更新 更多