Flutter 带Firestore的颤振搜索代理
我正在使用Flatter search Delegate实现一个搜索功能,数据存储在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 (!
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(),
);
},
);
}