Getx 如何使用 Obx 刷新列表

时间:2021-07-04 15:07:03

标签: flutter flutter-sliver flutter-getx

我正在使用 ReorderableSliverList,但我不知道如何根据我的数据动态观察列表。

屏幕 1

ReorderableSliverList(
          delegate: ReorderableSliverChildBuilderDelegate(
              (BuildContext context, int index) {
                final data = controller.products[index];
                    return ItemView(data);
            },
          childCount: controller.products.length),
          onReorder: _onReorder,
        ) 

在 screen2 将有一个添加按钮来调用控制器将新数据插入列表

控制器

var products = List<Product>.empty().obs;
void add(String name) {
    if (name != '') {
      final date = DateTime.now().toIso8601String();

      ProductProvider().postProduct(name, date).then((response) {
        final data = Product(
          id: response["name"],
          name: name,
          createdAt: date,
        );
        products.add(data);
        Get.back();
      });
    } else {
      dialogError("Semua input harus terisi");
    }
  }

上面的代码需要点击热重载才能在屏幕 1 中显示数据,如果屏幕 2 中的数据发生了变化。 我正在尝试使用 Obx 使其自动刷新,但结果仍然相同。

代码

ReorderableSliverList(
          delegate: ReorderableSliverChildBuilderDelegate(
              (BuildContext context, int index) {
            final data = controller.products[index];
            return Obx(
              () => controller.products.isEmpty
                  ? Center(
                      child: Text("BELUM ADA DATA"),
                    )
                  :  ItemView(data)        
            );
          }, childCount: controller.products.length),
          onReorder: _onReorder,
        )

1 个答案:

答案 0 :(得分:0)

您需要像这样用 Obx 包装整个 ReorderableSliverList

Obx(()=>ReorderableSliverList(
...
...
));