如何解决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 举报,一经查实,本站将立刻删除。