Flutter 优化 TextField 自动完成实现中的 API 调用次数

har*_*B10 5 dart flutter

我正在尝试实现自动完成以在我的应用程序中选择位置。为此,我使用 Here Maps API。目前我有这个TextField

onChanged: (query){
    print("Current value is: ${query}");
    if(query) { getPlacesFromHereMaps(query); } 
}, 
Run Code Online (Sandbox Code Playgroud)

在这里,每次用户输入一些字母时,都会调用自动完成 API。

因此,如果用户输入“New York”,则意味着应用程序将调用 API 大约 8 次,我发现这太多了。有没有办法优化这个?

Cop*_*oad 0

onChanged正在做它的工作。根据文档:

每当用户更改字段中的文本时,文本字段都会调用 onChanged 回调。如果用户指示他们已完成在字段中的输入(例如,通过按软键盘上的按钮),则文本字段将调用 onSubscribed 回调。

如果你想优化,你可以这样做:

onChanged(query) {
  if (query.length < 2) return;
  // if the length of the word is less than 2, stop executing your API call.

  // rest of your code
  getPlacesFromHereMaps(query);

}
Run Code Online (Sandbox Code Playgroud)