refactor: 重构弹窗组件支持自定义图标组件

This commit is contained in:
qzl
2026-04-07 12:30:12 +08:00
parent 8a18b3528b
commit f904286ba7
10 changed files with 72 additions and 49 deletions
@@ -10,6 +10,7 @@ import 'package:vibration/vibration.dart';
import '../../../../l10n/app_localizations.dart';
import '../../../../shared/theme/design_tokens.dart';
import '../../../../shared/widgets/app_modal_dialog.dart';
import '../../../../shared/widgets/gua_icon.dart';
import '../../../../shared/widgets/divination/divination_shared_widgets.dart';
import '../../../../shared/widgets/divination/divination_terms.dart';
import '../../../../shared/widgets/divination/yao_legend.dart';
@@ -253,7 +254,7 @@ class _AutoDivinationScreenState extends State<AutoDivinationScreen>
points.runCost,
points.availableBalance,
),
icon: Icons.auto_awesome_rounded,
iconWidget: const GuaIcon(),
actions: [
AppModalDialogAction(
label: l10n.cancel,
@@ -290,12 +291,11 @@ class _AutoDivinationScreenState extends State<AutoDivinationScreen>
),
);
} finally {
if (!mounted) {
return;
if (mounted) {
setState(() {
_submitting = false;
});
}
setState(() {
_submitting = false;
});
}
}
@@ -6,6 +6,7 @@ import '../../../../data/network/api_client.dart';
import '../../../../l10n/app_localizations.dart';
import '../../../../shared/theme/design_tokens.dart';
import '../../../../shared/widgets/app_modal_dialog.dart';
import '../../../../shared/widgets/gua_icon.dart';
import '../../../../shared/widgets/divination/divination_shared_widgets.dart';
import '../../../../shared/widgets/toast/toast.dart';
import '../../../../shared/widgets/toast/toast_type.dart';
@@ -385,7 +386,7 @@ Future<void> _showMethodTip(BuildContext context, AppLocalizations l10n) {
title: l10n.divinationMethodTipTitle,
message:
'${l10n.divinationMethodTipAuto}\n\n${l10n.divinationMethodTipManual}\n\n${l10n.divinationMethodTipRecommend}',
icon: Icons.lightbulb_outline_rounded,
iconWidget: const GuaIcon(),
actions: [
AppModalDialogAction(
label: l10n.divinationIAcknowledge,
@@ -5,6 +5,7 @@ import 'package:intl/intl.dart';
import '../../../../l10n/app_localizations.dart';
import '../../../../shared/theme/design_tokens.dart';
import '../../../../shared/widgets/app_modal_dialog.dart';
import '../../../../shared/widgets/gua_icon.dart';
import '../../../../shared/widgets/divination/divination_shared_widgets.dart';
import '../../../../shared/widgets/divination/divination_terms.dart';
import '../../../../shared/widgets/divination/yao_legend.dart';
@@ -166,7 +167,7 @@ class _ManualDivinationScreenState extends State<ManualDivinationScreen>
return AppModalDialog(
title: l10n.manualYaoTipTitle,
message: l10n.manualYaoTipContent,
icon: Icons.info_outline_rounded,
iconWidget: const GuaIcon(),
actions: [
AppModalDialogAction(
label: l10n.divinationIAcknowledge,
@@ -210,7 +211,7 @@ class _ManualDivinationScreenState extends State<ManualDivinationScreen>
points.runCost,
points.availableBalance,
),
icon: Icons.auto_awesome_rounded,
iconWidget: const GuaIcon(),
actions: [
AppModalDialogAction(
label: l10n.cancel,
@@ -247,12 +248,11 @@ class _ManualDivinationScreenState extends State<ManualDivinationScreen>
),
);
} finally {
if (!mounted) {
return;
if (mounted) {
setState(() {
_submitting = false;
});
}
setState(() {
_submitting = false;
});
}
}
}
@@ -506,18 +506,19 @@ class _YaoSelectionCard extends StatelessWidget {
width: double.infinity,
height: 120,
fit: BoxFit.contain,
errorBuilder: (_, __, ___) => Container(
height: 120,
color: colors.errorContainer,
child: Center(
child: Text(
l10n.divinationClose,
style: TextStyle(
color: colors.onErrorContainer,
errorBuilder: (context, error, stackTrace) =>
Container(
height: 120,
color: colors.errorContainer,
child: Center(
child: Text(
l10n.divinationClose,
style: TextStyle(
color: colors.onErrorContainer,
),
),
),
),
),
),
),
),
const SizedBox(height: AppSpacing.xs),