我正在尝试实现一个 Flutter 应用程序以从 API 端点获取数据。我已经在按钮按下时实现了获取功能。
虽然,我希望按钮 (Enregistrer) 在获取请求时或成功编辑(名称、地址...)后禁用(以避免多次点击)!
我使用 dart http 包实现了它。
这是我的代码:
Container(
margin: EdgeInsets.symmetric(
vertical: 10),
width: size.width * 0.4,
child: ElevatedButton(
onPressed: () {
if (_nameController.text ==
"" &&
_emailController.text ==
"" &&
_adressController
.text ==
"") {
setState(() =>
isButtonDisabled =
true);
} else {
editUserProfile();
}
},
child: Text('Enregistrer'),
void editUserProfile() async {
setState(() {});
// if (_formKey.currentState.validate()) {
String name = _nameController.text;
String email = _emailController.text;
String adress = _adressController.text;
userApi.editUserProfile(name, email, adress).then((data) {
if (data != null) {
}
setState(() {
enableup = false;
enableadress = false;
enableemail = false;
});
ScaffoldMessenger.of(context).showSnackBar(SnackBar(content: Text(data)));
// ScaffoldMessenger.of(context).showSnackBar(snackBar3);
}).catchError((error) {
ScaffoldMessenger.of(context)
.showSnackBar(SnackBar(content: Text(error.toString())));
});
setState(() {});
}
答案 0 :(得分:0)
如果您将 onPressed 设置为 null,您实际上会禁用点击
onPressed: isButtonDisabled ? null : () {
if (_nameController.text == "" &&
_emailController.text == "" &&
_adressController.text == "") {
setState(() =>
isButtonDisabled = true);
} else {
editUserProfile();
}
}