我如何过滤我的streambuilder列表与一个文本字段?



我正在制作一个关于希腊克里特岛的应用程序,上面有岛上所有值得一看的东西。在我的底部导航栏上,我有一个标签,可以进入一个新的屏幕,在appbar中有一个TextField,在body中我有我的完整列表(Firestore>Streambuilder祝辞ListViewBuilder)。当我点击其中一个项目时,它会重定向到一个详细页面。

为了使它更容易搜索,我希望能够过滤列表时,用户开始在文本字段中键入。

我似乎无法理解它,因为我也在使用一个详细页面…以下是目前为止的内容:

StreamBuilder(
                stream: FirebaseFirestore.instance.collection('Crete').orderBy('name', descending: false).snapshots(),
                builder: (context, snapshot) {
                  if (!snapshot.hasData) return const Center(child: CircularProgressIndicator(),);
                  return Container(
                    child: ListView.builder(
                      shrinkWrap: true,
                      clipBehavior: Clip.none,
                      physics: NeverScrollableScrollPhysics(),
                      scrollDirection: Axis.vertical,
                      itemCount: snapshot.data.docs.length,
                      itemBuilder: (BuildContext context, index) => _buildListItemCrete(context, snapshot.data.docs[index]),
                    ),
                  );
                },
              ),

TextField:

TextField(
            onChanged: (String value) {
              setState(() {
                searchResult = value;
              });
            },),

:

TextEditingController _searchController = TextEditingController();
  String searchResult = '';
  @override
  void initState(){
    super.initState();
    _searchController.addListener(_onSearchChanged);
  }
  @override
  void dispose(){
    _searchController.removeListener(_onSearchChanged);
    _searchController.dispose();
    super.dispose();
  }
  _onSearchChanged(){
    print(_searchController.text);
  }

如何通过在文本框中输入来过滤列表?

我终于在这个精彩的教程中找到了解决方案。

技巧是将streambuilder更改为listview。从我的快照集合中创建一个列表。

相关内容

  • 没有找到相关文章

最新更新