49 lines
1.4 KiB
Dart
49 lines
1.4 KiB
Dart
import 'package:flutter/material.dart';
|
|
|
|
import '../app/theme.dart';
|
|
|
|
/// 品牌云卡:橙→金渐变表面 + 深棕文字,用于首页 / 概览的招牌区块。
|
|
///
|
|
/// 自动把内部文字与图标设为 [AppBrand.onCloud](亮橙底上的深棕),
|
|
/// 因此卡片内无需再单独指定前景色。
|
|
class CloudCard extends StatelessWidget {
|
|
const CloudCard({
|
|
super.key,
|
|
this.child,
|
|
this.padding = const EdgeInsets.all(20),
|
|
this.radius,
|
|
});
|
|
|
|
final Widget? child;
|
|
final EdgeInsetsGeometry padding;
|
|
|
|
/// 圆角覆盖;默认用 [AppRadius.lg]。
|
|
final double? radius;
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
final scheme = Theme.of(context).colorScheme;
|
|
return Container(
|
|
decoration: BoxDecoration(
|
|
gradient: AppBrand.cloudGradient,
|
|
borderRadius: BorderRadius.circular(radius ?? AppRadius.lg),
|
|
boxShadow: AppShadows.md,
|
|
),
|
|
padding: padding,
|
|
foregroundDecoration: scheme.brightness == Brightness.dark
|
|
? BoxDecoration(
|
|
borderRadius: BorderRadius.circular(radius ?? AppRadius.lg),
|
|
color: Colors.black.withOpacity(0.28),
|
|
)
|
|
: null,
|
|
child: DefaultTextStyle(
|
|
style: const TextStyle(color: AppBrand.onCloud),
|
|
child: IconTheme(
|
|
data: const IconThemeData(color: AppBrand.onCloud),
|
|
child: child ?? const SizedBox.shrink(),
|
|
),
|
|
),
|
|
);
|
|
}
|
|
}
|