Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 带Firestore的颤振搜索代理_Flutter_Dart_Google Cloud Firestore - Fatal编程技术网

Flutter 带Firestore的颤振搜索代理

Flutter 带Firestore的颤振搜索代理,flutter,dart,google-cloud-firestore,Flutter,Dart,Google Cloud Firestore,我正在使用Flatter search Delegate实现一个搜索功能,数据存储在Firestore中。我不明白为什么会出现这个错误 Widget buildSuggestions(BuildContext context) { return StreamBuilder( stream: Firestore.instance.collection('todos').snapshots(), builder: (context, snapshot) { if (!

我正在使用Flatter search Delegate实现一个搜索功能,数据存储在Firestore中。我不明白为什么会出现这个错误

Widget buildSuggestions(BuildContext context) {
  return StreamBuilder(
    stream: Firestore.instance.collection('todos').snapshots(),
    builder: (context, snapshot) {
      if (!snapshot.hasData) return new Text('Loading...');

      final results =
          snapshot.data.documents.where((a) => a['title'].contains(query));

      return ListView(
        children: results.map<Widget>((a) => Text(a['title'])).toList(),
      );
    },
  );
}
小部件构建建议(构建上下文){
返回流生成器(
流:Firestore.instance.collection('TODO').snapshots(),
生成器:(上下文,快照){
如果(!snapshot.hasData)返回新文本('Loading…');
最终结果=
其中((a)=>a['title']包含(查询));
返回列表视图(
子项:results.map((a)=>Text(a['title'])).toList(),
);
},
);
}
错误:

type'(dynamic)=>dynamic'不是类型的子类型(DocumentSnapshot)=>bool'的“test”

替换该行

final results = snapshot.data.documents.where((a) => a['title'].contains(query));

线路呢

children: results.map<Widget>((a) => Text(a['title'])).toList()
children:results.map((a)=>Text(a['title')).toList()

children:results.map((a)=>Text(a.data['title')).toList()
更换线路

builder: (context, snapshot) {
  ....

builder:(构建上下文,异步快照){
.....
最终代码为:

 Widget buildSuggestions(BuildContext context) {
    return StreamBuilder(
      stream: FirebaseFirestore.instance.collection('todos').snapshots(),
      builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) {
        if (!snapshot.hasData) return new Text('Loading...');

        final results =
            snapshot.data.docs.where((a) => a['title'].contains(query));

        return ListView(
          children: results.map<Widget>((a) => Text(a['title'])).toList(),
        );
      },
    );
  }
       
小部件构建建议(构建上下文){
返回流生成器(
流:FirebaseFirestore.instance.collection('TODO').snapshots(),
生成器:(BuildContext上下文,异步快照){
如果(!snapshot.hasData)返回新文本('Loading…');
最终结果=
其中((a)=>a['title']包含(查询));
返回列表视图(
子项:results.map((a)=>Text(a['title'])).toList(),
);
},
);
}

仍在获取错误
type'(DocumentSnapshot)=>dynamic'不是类型的子类型(DocumentSnapshot)=>bool'的'test'
尝试
a.data['title'].toString().contains(query)
感谢您的帮助,我得到了解决方案:
最终结果=snapshot.data.documents.where((DocumentSnapshot a)=>a.data['title'].toString().contains(query));
子项:results.map((a)=>Text(a.data['title'].toString()).toList()
builder: (context, snapshot) {
  ....
builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) {
.....
 Widget buildSuggestions(BuildContext context) {
    return StreamBuilder(
      stream: FirebaseFirestore.instance.collection('todos').snapshots(),
      builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) {
        if (!snapshot.hasData) return new Text('Loading...');

        final results =
            snapshot.data.docs.where((a) => a['title'].contains(query));

        return ListView(
          children: results.map<Widget>((a) => Text(a['title'])).toList(),
        );
      },
    );
  }