颤振:获取数据后禁用按钮

时间:2021-06-01 11:17:13

标签: flutter dart

我正在尝试实现一个 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(() {});
  }

enter image description here

1 个答案:

答案 0 :(得分:0)

如果您将 onPressed 设置为 null,您实际上会禁用点击

onPressed: isButtonDisabled ? null : () {
  if (_nameController.text == "" &&
  _emailController.text == "" &&
  _adressController.text == "") {
   setState(() =>
    isButtonDisabled = true);
   } else {
    editUserProfile();
   }
}