Getx:RxMap可以和Obx一起使用吗?

问题描述 投票:0回答:1

我想在我的控制器中制作一个可观察的地图。但是,当我用 Obx() 包装使用可观察映射的小部件时,我收到运行时错误,显示“[Get] 已检测到 GetX 的不当使用。您应该只对特定的小部件使用 GetX 或 Obx更新一下。”

但我以为我已经使用 Obx 来更新特定的小部件。

class PaintingControllerX extends GetxController {
  final gridImages = <ui.Image?>[].obs;
}

class PaintingPage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    var controller = Get.put<PaintingControllerX>(PaintingControllerX());
    return Scaffold(
      body: Obx(() => GridWidget(controller.gridImages)),  // ERROR
    );
  }
}

我在另一个 StackOverflow 问题(Obx 小部件抛出错误)中看到该问题是通过调用观察对象上的 value 属性解决的。但是 RxMap.value 是受保护的,我不能在这里使用它。我还注意到 RxList 上有一个 toList() 方法,但 RxMap 上没有对应的 toMap() 。

如何将 RxMap 与 Obx 一起使用?

flutter flutter-getx
1个回答
0
投票

当然,仅将其用于小部件。此外,您使用的是列表而不是地图。

 //this line will be in controlller
    RxList mymap = <ui.Image?>[].obs



class PaintingPage extends StatelessWidget {
  PaintingPage({super.key});
  PaintingControllerX controller = Get.put(PaintingControllerX());
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: GridView.builder(
        itemCount: 20, // Number of items in the grid
        gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(
          crossAxisCount: 3, // Number of columns in the grid
          crossAxisSpacing: 5.0, // Spacing between columns
          mainAxisSpacing: 5.0, // Spacing between rows
        ),
        itemBuilder: (BuildContext context, int index) {
          //here gridbuilder always update the total lenght of the file if 
           need.
          return Obx(
            () => Container(
              color: Colors.primaries[index % Colors.primaries.length],
              alignment: Alignment.center,
              child: Image.network(controller.gridimage[index]),
            ),
          );
        },
      ),
    );
  }
}

尽管我现在还没有实施它。但它应该有效。如果没有,请发表评论,我会测试并一定会给您一个解决方案。快乐编码。

© www.soinside.com 2019 - 2024. All rights reserved.