Flutter Progress_state_button-如何更改按钮状态

如何解决Flutter Progress_state_button-如何更改按钮状态

我正在尝试在进度条中使用进度状态按钮。在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.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;
});

} }

但是,我是编码的新手,完全不知道如何使用“中断”或更改按钮状态。有人可以建议我如何插入我的函数(例如,将其空的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.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;
        });
      }
  }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?