我如何检查UI是否正在刷新?

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

[当使用小部件显示将来的构建者的项目列表时,我有一个问题,我有一个过滤器对象,当我在过滤器屏幕中进行更改时,会自动获得列表屏幕中的更改,但始终显示相同的内容数据,但项目列表具有UI显示的不同项目。

这是我的容器:

body: Container(
        color: Colors.white,
        child: FutureBuilder<ResponseHome>(
          future: Connection(context: context).filterPlaces(filter: _filter),
          builder: (context, snapshot) {
            if (snapshot.hasData) {
              return _formatCategories(context, snapshot.data.news, snapshot.data.places);
            } else if (snapshot.hasError) {
              var message = Utils.parseError(context, snapshot.error);
              return Center(
                child: Text("$message"),
              );
            }
            return Center(
              child: CircularProgressIndicator(),
            );
          },
        ),
      )

这是我用来制作小部件的功能:

Widget _formatCategories(BuildContext context, List<Publication> publications, ResponsePlaces response) {
    List<Category> categories = <Category>[];

    if (response.hotels.isNotEmpty) {
      categories.add(Category(title: "Hoteles", places: response.hotels));
    }

    if (response.restaurants.isNotEmpty) {
      categories.add(Category(title: "Restaurantes", places: response.restaurants));
    }

    if (response.touristic.isNotEmpty) {
      categories.add(Category(title: "Actividades", places: response.touristic));
    }

    for (var category in categories) {
      print("Category ${category.title}  ${category.places.length}");
    }

    return _containerLists(context, publications, categories);
  }


  Widget _containerLists(BuildContext context, List<Publication> publications, List<Category> categories) {

    List<Widget> items = <Widget>[];

    items.clear();

    items.add(
        Routes.newsSlider(publications)
    );

    for (var index in categories) {
      items.add(
          Routes.placeList(index)
      );
    }

    return SingleChildScrollView(
      scrollDirection: Axis.vertical,
      child: Container(
        child: Column(
          children: items,
        ),
      ),
    );
  }

这是证据,如果您看到我选择了其他类型的地方,但总是向我显示酒店。

这是我得到包含不同数据的列表的证据。

https://i.stack.imgur.com/lIwoN.png

android ios flutter mobile flutter-layout
1个回答
0
投票

如果您的items列表大小相同,可能会发生。如果是这样,则您的元素树无法识别列中的小部件已更改,因此您必须为其使用UniqueKey。您可以阅读有关它的更多信息here,尝试应用它并提供反馈,请]

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