Flutter Progress_state_button - 如何更改按钮状态

标签 flutter button state break progress

我正在尝试在 flutter 中使用进度状态按钮。从 pub.dev 文档来看,小部件应设置如下

    Widget buildTextWithIcon() {
return ProgressButton.icon(iconedButtons: {
  ButtonState.idle: IconedButton(
      text: "Send",
      icon: Icon(Icons.send, color: Colors.white),
      color: Colors.deepPurple.shade500),
  ButtonState.loading:
      IconedButton(text: "Loading", color: Colors.deepPurple.shade700),
  ButtonState.fail: IconedButton(
      text: "Failed",
      icon: Icon(Icons.cancel, color: Colors.white),
      color: Colors.red.shade300),
  ButtonState.success: IconedButton(
      text: "Success",
      icon: Icon(
        Icons.check_circle,
        color: Colors.white,
      ),
      color: Colors.green.shade400)
}, onPressed: onPressedIconWithText, state: stateTextWithIcon);

}

我有一个函数(已经编写并且工作正常),我想在单击按钮时运行该函数,将按钮状态更改为 ButtonState.loading,然后更改为 ButtonState.success,然后返回 ButtonState.idle。请参阅下面 pub.dev 网站上所述的函数。

    void onPressedIconWithText() {
switch (stateTextWithIcon) {
  case ButtonState.idle:
    stateTextWithIcon = ButtonState.loading;
    Future.delayed(Duration(seconds: 1), () {
      setState(() {
        stateTextWithIcon = Random.secure().nextBool()
            ? ButtonState.success
            : ButtonState.fail;
      });
    });

    break;
  case ButtonState.loading:
    break;
  case ButtonState.success:
    stateTextWithIcon = ButtonState.idle;
    break;
  case ButtonState.fail:
    stateTextWithIcon = ButtonState.idle;
    break;
}
setState(() {
  stateTextWithIcon = stateTextWithIcon;
});

} }

但是,我是编码新手,完全不知道如何使用“中断”或更改按钮状态。任何人都可以帮助建议我如何插入我的函数(假设它只是 void runFunction() 到上面的代码中,改变状态从空闲 --> 加载 (onPressed) --> 成功 --. 空闲。

任何帮助将不胜感激

最佳答案

您可以使用 setState 更新 stateTextWithIcon 的值

  ButtonState stateTextWithIcon = ButtonState.idle;


    Widget buildTextWithIcon() {
return ProgressButton.icon(iconedButtons: {
  ButtonState.idle: IconedButton(
      text: "Send",
      icon: Icon(Icons.send, color: Colors.white),
      color: Colors.deepPurple.shade500),
  ButtonState.loading:
      IconedButton(text: "Loading", color: Colors.deepPurple.shade700),
  ButtonState.fail: IconedButton(
      text: "Failed",
      icon: Icon(Icons.cancel, color: Colors.white),
      color: Colors.red.shade300),
  ButtonState.success: IconedButton(
      text: "Success",
      icon: Icon(
        Icons.check_circle,
        color: Colors.white,
      ),
      color: Colors.green.shade400)
}, onPressed: (){
      progressButton()
},
state: stateTextWithIcon,
);

这是我的 onPressed 处理的功能

 Future progressButton() async {
    setState(() {
//sets the  state of stateTextWithIcon to loading once button is pressed
    stateTextWithIcon = ButtonState.loading;
    });
    var url = 'https://google.com';
      final response = await http.get(url);

      if (response.statusCode == 200 || response.statusCode == 201) {
        setState(() {
//sets the  state of stateTextWithIcon to success if whatever request made was successful
          stateTextWithIcon= ButtonState.success;
        });
      } else {
        setState(() {
//sets the  state of stateTextWithIcon to fail if the request was unsuccessful
        stateTextWithIcon = ButtonState.fail;
        });
      }
  }

关于Flutter Progress_state_button - 如何更改按钮状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64163503/

相关文章:

javascript - react : Add user inputted form data to current state

javascript - 从无状态子组件更改父组件的状态

android - 给出错误 : Too few positional arguments: 1 required, 0

flutter - 如何将 BorderRadius 赋予 SliverList

flutter - 如何在 Flutter 中移动 Scaffold 的 body 和 bottomSheet?

android - Holo 主题使我的按钮更大

Javascript 将 switch 的大小写绑定(bind)到 html 按钮

flutter - 为什么使用定位器链接服务类-Flutter?

java - Android MediaPlayer 不会通过单击另一个按钮而停止

ReactJs保留多个react值并且刷新后不重置状态