我正在研究 Flutter,基于搜索参数调用 API。
我所做的是:
- 使用TextField创建的搜索框
- 在那个 TextField 的onChange中,我调用了从服务器获取数据的方法。
- ListView 显示列表
问题:当我使用后按完成搜索后隐藏键盘时,它再次请求获取数据。
您可以查看视频以获得更好的解释:
这是我的代码:
getTextInputField() {
return Flexible(
fit: FlexFit.tight,
flex: 1,
child: TextFormField(
controller: _text,
decoration: new InputDecoration(
labelText: "Enter Area for Pincode",
fillColor: Colors.white,
errorText: _validateAgain ? 'This should not be empty!' : null,
border: new OutlineInputBorder(
borderRadius: new BorderRadius.circular(15.0),
borderSide: new BorderSide(),
),
//fillColor: Colors.green
),
validator: (val) {
if (val.length == 0) {
return "This shouldn't be empty!";
} else {
return null;
}
},
onChanged: (value) {
getData();
},
keyboardType: TextInputType.streetAddress,
),
);
}
getData() {
setState(() {
if (_text.text.isNotEmpty) {
if (_text.text.length > 2) {
_validateAgain = false;
textValue = _text.text;
_apiCall = true;
_callAPIForPinCode();
}
} else
_validateAgain = true;
});
}
当我使用后按隐藏键盘时如何防止再次调用 API 。
注意:如果我使用键盘上的 done 键隐藏键盘,它不会调用 API 并平滑隐藏。
编辑:
由于我现在已经离线测试,它也在离线调用。它在关闭键盘时调用onChange事件。