| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- import 'package:flutter/material.dart';
- import '../../core/theme/app_colors.dart';
- /// Pencil Component/StatusBanner — 状态横幅
- ///
- /// 垂直居中排列:大图标(40x40)、状态文字(16号/600字重)、副文字(13号)。
- /// 圆角8,高度120,padding (20,16),gap 8。
- class StatusBanner extends StatelessWidget {
- final IconData icon;
- final String statusText;
- final String subText;
- final Color color;
- const StatusBanner({
- super.key,
- required this.icon,
- required this.statusText,
- required this.subText,
- this.color = AppColors.success,
- });
- @override
- Widget build(BuildContext context) {
- final backgroundColor = _lighten(color, 0.88);
- return Container(
- height: 120,
- padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 20),
- decoration: BoxDecoration(
- color: backgroundColor,
- borderRadius: BorderRadius.circular(8),
- ),
- child: Column(
- mainAxisAlignment: MainAxisAlignment.center,
- children: [
- Icon(icon, size: 40, color: color),
- const SizedBox(height: 8),
- Text(
- statusText,
- style: TextStyle(
- fontSize: AppFontSizes.subtitle,
- fontWeight: FontWeight.w600,
- color: color,
- ),
- ),
- const SizedBox(height: 4),
- Text(
- subText,
- style: TextStyle(
- fontSize: 13,
- color: color,
- ),
- ),
- ],
- ),
- );
- }
- /// 将颜色变浅,用于计算背景色
- static Color _lighten(Color color, double amount) {
- return Color.lerp(color, Colors.white, amount)!;
- }
- }
|