Flutter:Firebase基本查询或基本搜索代码

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

enter image description here

主要概念是显示包含搜索字母表的文档sor字段。

搜索栏获取给定的输入,它发送到_firebasesearch(),但作为回报没有出现,上面的图像是我的数据库结构,试图找出一个多星期。

import 'dart:async';
import 'package:flutter/material.dart';
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:flutter_search_bar/flutter_search_bar.dart';

SearchBar searchBar;
GlobalKey<ScaffoldState> _scaffoldKey = new GlobalKey<ScaffoldState>();

class DisplayCourse extends StatefulWidget {
  @override
  _DisplayCourseState createState() => new _DisplayCourseState();
}

AppBar _buildAppBar(BuildContext context) {
  return new AppBar(
    title: new Text("FIREBASE QUERY"),
    centerTitle: true,
    actions: <Widget>[
      searchBar.getSearchAction(context),
    ],
  );
}

class _DisplayCourseState extends State<DisplayCourse> {
  String _queryText;

  _DisplayCourseState() {
    searchBar = new SearchBar(
      onSubmitted: onSubmitted,
      inBar: true,
      buildDefaultAppBar: _buildAppBar,
      setState: setState,
    );
  }

  void onSubmitted(String value) {
    setState(() {
      _queryText = value;
      _scaffoldKey.currentState.showSnackBar(new SnackBar(
        content: new Text('You have Searched something!'),
        backgroundColor: Colors.yellow,
      ));
    });
  }

  @override
  Widget build(BuildContext context) {
    return new Scaffold(
      key: _scaffoldKey,
      appBar: searchBar.build(context),
      backgroundColor: Colors.red,
      body: _fireSearch(_queryText),
    );
  }
}

Widget _fireSearch(String queryText) {
  return new StreamBuilder(
    stream: Firestore.instance
    .collection('courses')
    .where('title', isEqualTo: queryText)
    .snapshots(),
    builder: (context, snapshot) {
      if (!snapshot.hasData) return new Text('Loading...');
      return new ListView.builder(
        itemCount: snapshot.data.documents.length,
        itemBuilder: (context, index) =>
            _buildListItem(snapshot.data.documents[index]),
      );
    },
  );
}

Widget _buildListItem(DocumentSnapshot document) {
  return new ListTile(
    title: document['title'],
    subtitle: document['subtitle'],
  );
}

主要概念是显示包含搜索字母表的文档sor字段

搜索栏获取给定的输入,它发送到_firebasesearch(),但是在重新生成时没有出现,上面的图像是我的数据库结构,试图计算超过一周,

firebase-realtime-database dart google-cloud-firestore flutter flutter-dependencies
2个回答
1
投票

问题是你期待来自firestore的结果title is equal to queryText不是title contains queryText

如果你想要搜索功能,你可以在get and store the firestore documents变量中使用List<Model> model而不是StreamBuilderimplement search manually来自上面存储的模型列表。


1
投票

这是另一个搜索代码,这将在火灾基础数据库中搜索,qazxsw poi

enter image description here
© www.soinside.com 2019 - 2024. All rights reserved.