我是扑朔迷离的新手,我有一个可以搜索使用API的函数,并且在_fetchData()
内创建了一个名为StatefulWidget
的函数:
_fetchData() async {
print("fetchData Run");
print(widget.query);
this.setState((){
isLoading=true;
});
final response = await http.get(URL+'search/keyword?api_key='+API_KEY+'&query='+widget.query);
if (response.statusCode == 200) {
print(response.body);
var list = json.decode(response.body)["results"] as List;
keywordList = list.map<Keyword>((json)=>Keyword.fromJson(json)).toList();
this.setState((){
isLoading=false;
});
} else {
throw Exception('Failed to load photos');
}
}
然后我将StatefulWidget
放在buildSuggestions
中,就像这样:
class SearchHome extends SearchDelegate {
@override
List<Widget> buildActions(BuildContext context) {
//widget
}
@override
Widget buildLeading(BuildContext context) {
//widget
}
@override
Widget buildResults(BuildContext context) {
//widget
}
@override
Widget buildSuggestions(BuildContext context) {
//SuggestKeyword is my statefullwidget with _fetchData() function inside
return SuggestKeyword(query: query);
}
}
但是我很困惑为什么_fetchData()
持续运行,这意味着我的应用程序一直使用API,我认为这不好,所以我想避免使用它
我知道我可以将SuggestKeyword
放在buildResults
内,但是这些方法需要用户提交/输入键盘才能运行,我想在用户仍在键入时进行搜索,但是{{1} }即使用户没有输入,也可以继续运行,