
微信交流群
# 登录进度按钮
效果:
此按钮有三种状态:
- 显示“登录”文字的状态。
- 显示进度的状态。
- 完成状态。
当处于“登录”状态时点击状态变换为进度状态,2秒后变为完成状态。
完整代码如下:
class ButtonCase extends StatefulWidget {
_ButtonCaseState createState() => _ButtonCaseState();
}
class _ButtonCaseState extends State<ButtonCase> {
ButtonStatus _buttonStatus = ButtonStatus.none;
_buildChild() {
if (_buttonStatus == ButtonStatus.none) {
return Text(
'登 录',
style: TextStyle(color: Colors.white,fontSize: 18),
);
} else if (_buttonStatus == ButtonStatus.loading) {
return CircularProgressIndicator(
backgroundColor: Colors.white,
strokeWidth: 2,
);
} else if (_buttonStatus == ButtonStatus.done) {
return Icon(
Icons.check,
color: Colors.white,
);
}
}
Widget build(BuildContext context) {
return MaterialButton(
color: Colors.blue,
minWidth: 240,
height: 48,
onPressed: () {
setState(() {
_buttonStatus = ButtonStatus.loading;
Future.delayed(Duration(seconds: 2), () {
setState(() {
_buttonStatus = ButtonStatus.done;
});
});
});
},
child: _buildChild(),
);
}
}
enum ButtonStatus { none, loading, done }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
版权所有,禁止私自转发、克隆网站。