status<T> static method
Future<T?>
status<T>(
- BuildContext context, {
- required String status,
- required Widget statusIcon,
- IconData? closeIcon,
- String? description,
- List<
Color> colors = const [Color(0x9a03A9F4), Color(0xFF651FFF), Color(0x9a7C4DFF)], - Alignment begin = Alignment.topLeft,
- Alignment end = Alignment.bottomRight,
- bool barrierDismissible = false,
- VoidCallback? onTapClosed,
- bool? dark,
状态栏,表示成功,失败,奖励等状态的提示
用途
- 成功/失败事件的显示,说明
- 获取道具事件的说明
- 仅表示一种状态的事件。
参数 |参数名|描述|是否必须|
- context 上下文
- status 表示状态的文字
- statusIcon 表示状态相对于的图标
- closeIcon 右上角关闭按钮的图标
- description 描述文字,用于表示状态获取后的描述。
- colors 渐变背景色
- begin 渐变色起始位置
- end 渐变色结束位置
- barrierDismissible 对话框空白区域点击关闭是否支持,默认支持点击空白区域可以关闭对话框。
Implementation
static Future<T?> status<T>(
BuildContext context, {
required String status,
required Widget statusIcon,
IconData? closeIcon,
String? description,
List<Color> colors = const [
Color(0x9a03A9F4),
Color(0xFF651FFF),
Color(0x9a7C4DFF),
],
Alignment begin = Alignment.topLeft,
Alignment end = Alignment.bottomRight,
bool barrierDismissible = false,
VoidCallback? onTapClosed,
bool? dark,
}) {
bool _dark = dark ?? (Theme.of(context).brightness == Brightness.dark);
Color _barrierColor = _dark ? Color(0xaa000000) : Color(0x9effffff);
// Color _backgroundColor = _dark ? Colors.black45 : Colors.white60;
return showDialog<T>(
context: context,
barrierColor: _barrierColor,
barrierDismissible: barrierDismissible,
builder: (BuildContext context) {
return Dialog(
backgroundColor: Colors.transparent,
child: Stack(
children: [
Container(
padding: EdgeInsets.only(
top: 12.0, left: 12.0, bottom: 12.0, right: 10.0),
margin: EdgeInsets.only(right: 18.0, top: 12.0),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10.0),
gradient: LinearGradient(
colors: colors,
begin: begin,
end: end,
),
),
child: Column(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Container(
width: double.infinity,
padding: EdgeInsets.only(bottom: 20.0, top: 20.0),
child: statusIcon,
),
Container(
padding: EdgeInsets.only(bottom: 8.0),
child: Text(
status,
style: TextStyle(
fontSize: 28.0,
color: Colors.white,
fontWeight: FontWeight.bold),
),
),
Container(
child: Text(
description ?? "",
style: TextStyle(fontSize: 10.0, color: Colors.white),
),
)
],
),
),
Container(
height: 24,
alignment: Alignment.topRight,
child: CircleAvatar(
backgroundColor: Colors.black54,
child: InkWell(
onTap: onTapClosed ??
() {
Navigator.of(context).pop();
},
child: Icon(
closeIcon ?? Icons.close_rounded,
color: Colors.white,
size: 18.0,
),
),
),
),
],
),
);
},
);
}