问题描述
基本上,我想从 Firestore 检索 buildSuggestions 数据。但是:FutureBuilder 或 buildSuggestions 内的 StreamBuilder 会导致一遍又一遍地检索相同的数据(我想不是很划算)。
我应该在哪里检索 Firestore 数据以在 Flutter 中显示为搜索建议?
@override
Widget buildSuggestions(BuildContext context) {
Future<List<dynamic>> _fetchData() async {
List<dynamic> queries;
queries = await FirebaseFirestore.instance
.collection('Others')
.doc('Search')
.get()
.then((value) {
return queries = value.data()['queries'];
});
return queries;
}
return FutureBuilder(
future: _fetchData(),builder: (context,snapshot) {
print('reloaded');
if (snapshot.connectionState == ConnectionState.waiting) {
return Center(child: CupertinoActivityIndicator());
}
if (!snapshot.hasData) {
return Center(child: Text('Failed to Load Data'));
}
final suggestionList = query.isEmpty
? snapshot.data
: snapshot.data
.where((element) =>
element.toString().startsWith(query[0].toupperCase()))
.toList();
return ListView.builder(
itemCount: suggestionList.length,itemBuilder: (context,index) {
return ListTile(
onTap: () {
query = suggestionList[index];
showResults(context);
},leading: Icon(Icons.insert_chart),title: Text(
suggestionList[index],style: TextStyle(fontWeight: FontWeight.w400),),);
},);
},);
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)