status<T> static method

Future<T?> status<T>(
  1. BuildContext context, {
  2. required String status,
  3. required Widget statusIcon,
  4. IconData? closeIcon,
  5. String? description,
  6. List<Color> colors = const [Color(0x9a03A9F4), Color(0xFF651FFF), Color(0x9a7C4DFF)],
  7. Alignment begin = Alignment.topLeft,
  8. Alignment end = Alignment.bottomRight,
  9. bool barrierDismissible = false,
  10. VoidCallback? onTapClosed,
  11. 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,
                  ),
                ),
              ),
            ),
          ],
        ),
      );
    },
  );
}