我试图构建一个搜索栏,每次搜索栏的值改变时,我都想将值传递给数据库函数,该函数根据搜索栏的值搜索数据库。问题是当我使用FutureProvider.family
时,我可以传递一个参数,当在onChanged
中调用ref.refresh(searchResultsProvider(query))
时,ref.watch(searchResultsProvider(''))
可以触发小部件的重建,但它不工作,它只有重建小部件,如果相同的字符串参数传递给提供者,但我想传递不同的字符串参数,每次onChanged被调用。
提供商:
final searchResultsProvider = FutureProvider.autoDispose
.family<List<Map<String, dynamic>>, String>((ref, value) async {
final data = await dbGetSearchResults(value);
return data;
});
.观看:
Widget build(BuildContext context) {
final searchResults = ref.watch(searchResultsProvider(''));
onChanged:
TextField(onChanged: (value) {
ref.refresh(searchResultsProvider(value));
},
1条答案
按热度按时间6l7fqoea1#
尝试添加另一个提供程序,它将负责文本框的状态:
在widget中,你可以这样做:
每次
textFieldValue
提供程序的值更改时,都会执行带有新参数的searchResultsProvider(fieldValue)
查询。