diff --git a/jive-flutter/lib/widgets/dialogs/accept_invitation_dialog.dart b/jive-flutter/lib/widgets/dialogs/accept_invitation_dialog.dart index 81afc3ed..86d671fa 100644 --- a/jive-flutter/lib/widgets/dialogs/accept_invitation_dialog.dart +++ b/jive-flutter/lib/widgets/dialogs/accept_invitation_dialog.dart @@ -6,7 +6,6 @@ import 'package:jive_money/models/user.dart'; import 'package:jive_money/services/invitation_service.dart'; import 'package:jive_money/providers/family_provider.dart'; import 'package:jive_money/providers/auth_provider.dart'; -import 'package:jive_money/utils/snackbar_utils.dart'; /// 接受邀请对话框 class AcceptInvitationDialog extends ConsumerStatefulWidget { @@ -48,6 +47,8 @@ class _AcceptInvitationDialogState }); try { + final messenger = ScaffoldMessenger.of(context); + final navigator = Navigator.of(context); // 调用服务接受邀请 final success = await _invitationService.acceptInvitation( invitationId: invitation.id, @@ -57,25 +58,27 @@ class _AcceptInvitationDialogState if (success && mounted) { // 刷新家庭列表 await ref.read(familyControllerProvider.notifier).loadUserFamilies(); - if (!context.mounted) return; + if (!mounted) return; // 显示成功消息 - SnackbarUtils.showSuccess( - context, - '已成功加入 ${family.name}', + messenger.hideCurrentSnackBar(); + messenger.showSnackBar( + SnackBar(content: Text('已成功加入 ${family.name}')), ); - // 关闭对话框 - Navigator.of(context).pop(true); + navigator.pop(true); // 触发回调 widget.onAccepted?.call(); } } catch (e) { if (mounted) { - SnackbarUtils.showError( - context, - '接受邀请失败: ${e.toString()}', + final messengerErr = ScaffoldMessenger.of(context); + messengerErr.showSnackBar( + SnackBar( + content: Text('接受邀请失败: ${e.toString()}'), + backgroundColor: Colors.red, + ), ); } } finally { @@ -90,8 +93,6 @@ class _AcceptInvitationDialogState @override Widget build(BuildContext context) { final theme = Theme.of(context); - final currentUser = ref.watch(authStateProvider).value; - return AlertDialog( title: Text(_showConfirmation ? '确认加入' : '邀请详情'), content: SingleChildScrollView( diff --git a/jive-flutter/lib/widgets/dialogs/delete_family_dialog.dart b/jive-flutter/lib/widgets/dialogs/delete_family_dialog.dart index 8e6f3b38..8569ccf7 100644 --- a/jive-flutter/lib/widgets/dialogs/delete_family_dialog.dart +++ b/jive-flutter/lib/widgets/dialogs/delete_family_dialog.dart @@ -40,6 +40,9 @@ class _DeleteFamilyDialogState extends ConsumerState { Future _deleteFamily() async { if (!_isNameValid) return; + final navigator = Navigator.of(context); + final messenger = ScaffoldMessenger.of(context); + // 二次确认 final secondConfirm = await showDialog( context: context, @@ -81,7 +84,7 @@ class _DeleteFamilyDialogState extends ConsumerState { await familyService.deleteFamily(widget.family.id); // 刷新Family列表 - ref.refresh(userFamiliesProvider); + final _ = ref.refresh(userFamiliesProvider); if (mounted) { // 如果删除的是当前Family,切换到其他Family或显示空状态 @@ -91,13 +94,13 @@ class _DeleteFamilyDialogState extends ConsumerState { if (families.isNotEmpty) { // 切换到第一个可用的Family await familyService.switchFamily(families.first.family.id); - if (!context.mounted) return; - ref.refresh(currentFamilyProvider); + if (!mounted) return; + final _ = ref.refresh(currentFamilyProvider); } } - Navigator.of(context).pop(true); - ScaffoldMessenger.of(context).showSnackBar( + navigator.pop(true); + messenger.showSnackBar( SnackBar( content: Text('已删除 "${widget.family.name}"'), backgroundColor: Colors.green, @@ -105,7 +108,7 @@ class _DeleteFamilyDialogState extends ConsumerState { ); // 导航到Family列表或Dashboard - Navigator.of(context).pushNamedAndRemoveUntil( + navigator.pushNamedAndRemoveUntil( '/dashboard', (route) => false, ); diff --git a/jive-flutter/lib/widgets/qr_code_generator.dart b/jive-flutter/lib/widgets/qr_code_generator.dart index 930f79ea..85f3e487 100644 --- a/jive-flutter/lib/widgets/qr_code_generator.dart +++ b/jive-flutter/lib/widgets/qr_code_generator.dart @@ -198,8 +198,8 @@ class _QrCodeGeneratorState extends State ? SizedBox( width: widget.size, height: widget.size, - child: const Center( - child: const CircularProgressIndicator(), + child: Center( + child: CircularProgressIndicator(), ), ) : ScaleTransition( @@ -321,7 +321,7 @@ class _QrCodeGeneratorState extends State width: size ?? 200, height: size ?? 200, color: backgroundColor ?? Colors.white, - child: const Center( + child: Center( child: Text( 'QR Code Placeholder', style: TextStyle(color: foregroundColor ?? Colors.black), diff --git a/jive-flutter/lib/widgets/states/loading_indicator.dart b/jive-flutter/lib/widgets/states/loading_indicator.dart index d4589a72..dcf5c4ae 100644 --- a/jive-flutter/lib/widgets/states/loading_indicator.dart +++ b/jive-flutter/lib/widgets/states/loading_indicator.dart @@ -26,7 +26,7 @@ class LoadingIndicator extends StatelessWidget { child: Column( mainAxisSize: MainAxisSize.min, children: [ - const SizedBox( + SizedBox( width: size, height: size, child: CircularProgressIndicator( @@ -35,7 +35,7 @@ class LoadingIndicator extends StatelessWidget { ), ), if (message != null) ...[ - const SizedBox(height: 16), + SizedBox(height: 16), Text( message!, style: theme.textTheme.bodyMedium?.copyWith( @@ -115,7 +115,7 @@ class LoadingButton extends StatelessWidget { onPressed: isLoading ? null : onPressed, style: style, child: isLoading - ? const SizedBox( + ? SizedBox( width: loadingSize, height: loadingSize, child: CircularProgressIndicator(