refactor(apps): 主题系统迁移至 ColorScheme + 扩展架构并支持 Dark Mode
This commit is contained in:
@@ -72,7 +72,7 @@ class _DetailHeaderActionMenuState<T> extends State<DetailHeaderActionMenu<T>> {
|
||||
CompositedTransformFollower(
|
||||
link: _layerLink,
|
||||
showWhenUnlinked: false,
|
||||
offset: const Offset(
|
||||
offset: Offset(
|
||||
_buttonSize - _menuWidth,
|
||||
_buttonSize + AppSpacing.sm,
|
||||
),
|
||||
@@ -101,18 +101,19 @@ class _DetailHeaderActionMenuState<T> extends State<DetailHeaderActionMenu<T>> {
|
||||
}
|
||||
|
||||
Widget _buildMenuCard() {
|
||||
final colorScheme = Theme.of(context).colorScheme;
|
||||
return Material(
|
||||
color: Colors.transparent,
|
||||
color: colorScheme.surface.withValues(alpha: 0),
|
||||
child: Container(
|
||||
width: _menuWidth,
|
||||
padding: const EdgeInsets.symmetric(vertical: AppSpacing.sm),
|
||||
decoration: BoxDecoration(
|
||||
color: AppColors.white,
|
||||
color: colorScheme.surface,
|
||||
borderRadius: BorderRadius.circular(AppRadius.lg),
|
||||
border: Border.all(color: AppColors.borderSecondary),
|
||||
border: Border.all(color: colorScheme.outlineVariant),
|
||||
boxShadow: [
|
||||
BoxShadow(
|
||||
color: AppColors.slate300.withValues(alpha: 0.42),
|
||||
color: colorScheme.shadow.withValues(alpha: 0.42),
|
||||
blurRadius: AppSpacing.xl,
|
||||
offset: const Offset(0, AppSpacing.sm),
|
||||
),
|
||||
@@ -125,12 +126,14 @@ class _DetailHeaderActionMenuState<T> extends State<DetailHeaderActionMenu<T>> {
|
||||
for (int i = 0; i < widget.items.length; i++) ...[
|
||||
_buildMenuItem(widget.items[i]),
|
||||
if (i < widget.items.length - 1)
|
||||
const Padding(
|
||||
padding: EdgeInsets.symmetric(horizontal: AppSpacing.md),
|
||||
Padding(
|
||||
padding: const EdgeInsets.symmetric(
|
||||
horizontal: AppSpacing.md,
|
||||
),
|
||||
child: Divider(
|
||||
height: 1,
|
||||
thickness: 1,
|
||||
color: AppColors.slate100,
|
||||
color: colorScheme.outlineVariant,
|
||||
),
|
||||
),
|
||||
],
|
||||
@@ -141,21 +144,26 @@ class _DetailHeaderActionMenuState<T> extends State<DetailHeaderActionMenu<T>> {
|
||||
}
|
||||
|
||||
Widget _buildMenuItem(DetailHeaderActionItem<T> item) {
|
||||
final colorScheme = Theme.of(context).colorScheme;
|
||||
final textColor = item.isDestructive
|
||||
? AppColors.red500
|
||||
: (item.enabled ? AppColors.slate700 : AppColors.slate400);
|
||||
? colorScheme.error
|
||||
: (item.enabled ? colorScheme.onSurface : colorScheme.onSurfaceVariant);
|
||||
final pressedColor = item.isDestructive
|
||||
? AppColors.feedbackErrorSurface
|
||||
: AppColors.surfaceInfoLight;
|
||||
? colorScheme.errorContainer
|
||||
: colorScheme.primaryContainer;
|
||||
|
||||
return SizedBox(
|
||||
height: AppSpacing.xxl * 2,
|
||||
child: Material(
|
||||
color: Colors.transparent,
|
||||
color: colorScheme.surface.withValues(alpha: 0),
|
||||
child: InkWell(
|
||||
borderRadius: BorderRadius.circular(AppRadius.md),
|
||||
splashColor: item.enabled ? pressedColor : Colors.transparent,
|
||||
highlightColor: item.enabled ? pressedColor : Colors.transparent,
|
||||
splashColor: item.enabled
|
||||
? pressedColor
|
||||
: colorScheme.surface.withValues(alpha: 0),
|
||||
highlightColor: item.enabled
|
||||
? pressedColor
|
||||
: colorScheme.surface.withValues(alpha: 0),
|
||||
onTap: item.enabled ? () => _handleSelect(item.value) : null,
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.symmetric(horizontal: AppSpacing.md),
|
||||
@@ -190,6 +198,7 @@ class _DetailHeaderActionMenuState<T> extends State<DetailHeaderActionMenu<T>> {
|
||||
return const SizedBox.shrink();
|
||||
}
|
||||
|
||||
final colorScheme = Theme.of(context).colorScheme;
|
||||
return CompositedTransformTarget(
|
||||
link: _layerLink,
|
||||
child: GestureDetector(
|
||||
@@ -200,19 +209,19 @@ class _DetailHeaderActionMenuState<T> extends State<DetailHeaderActionMenu<T>> {
|
||||
height: _buttonSize,
|
||||
decoration: BoxDecoration(
|
||||
color: _isMenuOpen
|
||||
? AppColors.surfaceInfo
|
||||
: AppColors.surfaceTertiary,
|
||||
? colorScheme.secondaryContainer
|
||||
: colorScheme.tertiaryContainer,
|
||||
borderRadius: BorderRadius.circular(AppRadius.md),
|
||||
border: Border.all(
|
||||
color: _isMenuOpen
|
||||
? AppColors.borderQuaternary
|
||||
: AppColors.borderTertiary,
|
||||
? colorScheme.outlineVariant
|
||||
: colorScheme.outline,
|
||||
),
|
||||
),
|
||||
child: const Icon(
|
||||
child: Icon(
|
||||
Icons.more_horiz,
|
||||
size: AppSpacing.lg + AppSpacing.xs,
|
||||
color: AppColors.slate600,
|
||||
color: colorScheme.onSurfaceVariant,
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
Reference in New Issue
Block a user