firebase 如何在flutter应用中添加搜索历史记录功能

anauzrmj  于 2023-02-25  发布在  Flutter
关注(0)|答案(1)|浏览(268)

我最近在flutter应用程序中添加了搜索功能,我想在我的flutter应用程序中添加搜索历史记录功能。我被困在这个我不知道如何添加它。请给我说明,并提供合适的代码。
我的代码

TextFormField(
                keyboardType: TextInputType.text,
                textInputAction: TextInputAction.search,
                controller: searchcontroller,
                focusNode: fousnode,
        onChanged: (query) {
          setState(() {
            FirebaseFirestore.instance
                .collectionGroup("Add_product")
                .where("product_name", isGreaterThanOrEqualTo: query)
                .where("product_name", isLessThan: query + 'z')
                .snapshots();
          });
        },

                decoration: InputDecoration(
                  hintText: "Search Product",
                  border: OutlineInputBorder(
                    borderRadius: BorderRadius.all(Radius.circular(11)),
                  ),
                ),
              )
StreamBuilder(
              stream:
              FirebaseFirestore.instance.collectionGroup("Add_product").snapshots(),
              builder: (BuildContext context,
                  AsyncSnapshot<QuerySnapshot> snapshot) {
                List<QueryDocumentSnapshot> data = snapshot.data!.docs;
                if (searchcontroller.text.isNotEmpty) {
                  data = data.where((doc) => doc["product_name"]
                      .toLowerCase()
                      .contains(searchcontroller.text.toLowerCase()))
                      .toList();
                }
                return GridView.builder(
                  itemCount:data.length,
                  itemBuilder: (itemBuilder, index) {
                      return Container(
                        child: InkWell(
                          onTap: (){
                            Navigator.push(context, MaterialPageRoute(builder: (builder)=>detail(
                              url: snapshot.data!.docs[index]["url"],
                              productName: snapshot.data!.docs[index]["product_name"],
                              productPrice: snapshot.data!.docs[index]["product_price"],
                            )));
                          },
                          child: ListTile(
                            leading: CircleAvatar(
                              backgroundImage: NetworkImage(
                                  snapshot.data!.docs[index]["url"]
                              ),
                            ),
                            title: Text(snapshot.data!.docs[index]["product_name"])
                            ),

                          ),
                        ),
                      );

                  },
                );
              }),
czfnxgou

czfnxgou1#

每次执行搜索时,您可以创建一个列表或Map,并根据需要将其保存在本地或数据库中。要使您要恢复的数据显示在搜索栏下,我建议使用现有的插件,如material_floating_search_bar
共享首选项的示例(本地):

final prefs = await SharedPreferences.getInstance();

    List<String> _currentResearch = prefs.getStringList("searches") ?? [];

    _currentResearch.add(searchcontroller.text);

    await prefs.setStringList("searches", _ricercheAttuali);

相关问题