showSearch方法的buildSuggestions是否连续运行?

时间:2019-04-23 09:13:43

标签: dart flutter

我是扑朔迷离的新手,我有一个可以搜索使用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} }即使用户没有输入,也可以继续运行,

我做错什么了吗?任何建议将不胜感激!

0 个答案:

没有答案