如何在Flutter中使用复选框从列表中搜索数据

时间:2019-10-07 05:02:26

标签: listview flutter flutter-layout flutter-dependencies flutter-sliver

我想从列表中进行搜索,并使用复选框将数据呈现到该列表中。这意味着在这张照片中我已经有数据了,但是当我单击应用程序栏搜索框并开始搜索数据时,它将根据搜索数据为我提供结果。

这里是项目的完整源代码。 https://github.com/rutvikgumasana/testing

This is the out of the code

1 个答案:

答案 0 :(得分:1)

我已经对列表中的数据进行了本地搜索。检查以下代码

初始化一个全局列表对象

List<ServicesByCountry> finalList = new List();

在构造函数中传递您的searchQuery

final BspServiceBloc _bspServiceBloc;
final String searchQuery;
final List<int> servicesIds;
final Map<String, bool> selection;

  const BspServiceScreen({
    Key key,
    @required BspServiceBloc bspServiceBloc,
    @required this.servicesIds,
    @required this.selection,
    this.searchQuery,
  })  : _bspServiceBloc = bspServiceBloc,
        super(key: key);

然后使用下面的代码进行搜索

WidgetsBinding.instance.addPostFrameCallback((_) {
  if (widget.searchQuery != '') {
    finalList.clear();
    lovCountryServices.forEach((ServicesByCountry data) {
      if (data.name
          .toLowerCase()
          .contains(widget.searchQuery.toLowerCase())) {
        setState(() {
          finalList.add(data);
        });
      } else {
        data.services.forEach((Service services) {
          if (services.name
              .toLowerCase()
              .contains(widget.searchQuery.toLowerCase())) {
            setState(() {
              finalList.add(data);
            });
          }
        });
      }
    });
  } else {
    setState(() {
      finalList.clear();
      finalList.addAll(lovCountryServices);
    });
  }
});

然后将最终列表传递到您的listView小部件