diff --git a/jive-flutter/lib/screens/theme_management_screen.dart b/jive-flutter/lib/screens/theme_management_screen.dart index ccc09204..d5cef867 100644 --- a/jive-flutter/lib/screens/theme_management_screen.dart +++ b/jive-flutter/lib/screens/theme_management_screen.dart @@ -408,7 +408,7 @@ class _ThemeManagementScreenState extends State case 'eye_comfort': await ThemeService().applyEyeComfortTheme(); if (mounted) { - ScaffoldMessenger.of(context).showSnackBar( + messenger.showSnackBar( const SnackBar(content: Text('已应用护眼主题')), ); } @@ -416,7 +416,7 @@ class _ThemeManagementScreenState extends State case 'apply_eye_bluegrey': await ThemeService().applyPresetTheme('preset_eye_bluegrey'); if (mounted) { - ScaffoldMessenger.of(context).showSnackBar( + messenger.showSnackBar( const SnackBar(content: Text('已应用护眼·蓝灰')), ); } @@ -424,7 +424,7 @@ class _ThemeManagementScreenState extends State case 'apply_eye_green': await ThemeService().applyPresetTheme('preset_eye_green'); if (mounted) { - ScaffoldMessenger.of(context).showSnackBar( + messenger.showSnackBar( const SnackBar(content: Text('已应用护眼·青绿')), ); } @@ -432,7 +432,7 @@ class _ThemeManagementScreenState extends State case 'apply_eye_dark': await ThemeService().applyPresetTheme('preset_eye_dark'); if (mounted) { - ScaffoldMessenger.of(context).showSnackBar( + messenger.showSnackBar( const SnackBar(content: Text('已应用护眼·夜间')), ); } @@ -463,7 +463,7 @@ class _ThemeManagementScreenState extends State if (!mounted) return; if (result != null) { - ScaffoldMessenger.of(context).showSnackBar( + messenger.showSnackBar( SnackBar( content: Text('主题"${result.name}"创建成功'), backgroundColor: Colors.green, @@ -481,7 +481,7 @@ class _ThemeManagementScreenState extends State if (!mounted) return; if (result != null) { - ScaffoldMessenger.of(context).showSnackBar( + messenger.showSnackBar( SnackBar( content: Text('主题"${result.name}"已更新'), backgroundColor: Colors.green, @@ -498,6 +498,7 @@ class _ThemeManagementScreenState extends State } Future _copyTheme(models.CustomThemeData theme) async { + final messenger = ScaffoldMessenger.of(context); try { final newTheme = await _themeService.createCustomTheme( name: '${theme.name} (副本)', @@ -507,14 +508,14 @@ class _ThemeManagementScreenState extends State ); if (!mounted) return; - ScaffoldMessenger.of(context).showSnackBar( + messenger.showSnackBar( SnackBar( content: Text('主题"${newTheme.name}"创建成功'), backgroundColor: Colors.green, ), ); } catch (e) { - ScaffoldMessenger.of(context).showSnackBar( + messenger.showSnackBar( SnackBar( content: Text('复制失败: $e'), backgroundColor: Colors.red, @@ -524,17 +525,18 @@ class _ThemeManagementScreenState extends State } Future _exportTheme(models.CustomThemeData theme) async { + final messenger = ScaffoldMessenger.of(context); try { await _themeService.copyThemeToClipboard(theme.id); - if (!context.mounted) return; - ScaffoldMessenger.of(context).showSnackBar( + if (!mounted) return; + messenger.showSnackBar( const SnackBar( content: Text('主题已复制到剪贴板'), backgroundColor: Colors.green, ), ); } catch (e) { - ScaffoldMessenger.of(context).showSnackBar( + messenger.showSnackBar( SnackBar( content: Text('导出失败: $e'), backgroundColor: Colors.red, @@ -544,6 +546,10 @@ class _ThemeManagementScreenState extends State } Future _deleteTheme(models.CustomThemeData theme) async { + final navigator = Navigator.of(context); + final messenger = ScaffoldMessenger.of(context); + final navigator = Navigator.of(context); + final messenger = ScaffoldMessenger.of(context); final confirmed = await showDialog( context: context, builder: (context) => AlertDialog( @@ -551,11 +557,11 @@ class _ThemeManagementScreenState extends State content: Text('确定要删除主题"${theme.name}"吗?此操作不可撤销。'), actions: [ TextButton( - onPressed: () => Navigator.of(context).pop(false), + onPressed: () => navigator.pop(false), child: const Text('取消'), ), ElevatedButton( - onPressed: () => Navigator.of(context).pop(true), + onPressed: () => navigator.pop(true), style: ElevatedButton.styleFrom( backgroundColor: Colors.red, foregroundColor: Colors.white, @@ -569,15 +575,15 @@ class _ThemeManagementScreenState extends State if (confirmed == true) { try { await _themeService.deleteCustomTheme(theme.id); - if (!context.mounted) return; - ScaffoldMessenger.of(context).showSnackBar( + if (!mounted) return; + messenger.showSnackBar( SnackBar( content: Text('主题"${theme.name}"已删除'), backgroundColor: Colors.orange, ), ); } catch (e) { - ScaffoldMessenger.of(context).showSnackBar( + messenger.showSnackBar( SnackBar( content: Text('删除失败: $e'), backgroundColor: Colors.red, @@ -588,18 +594,19 @@ class _ThemeManagementScreenState extends State } Future _importFromClipboard() async { + final messenger = ScaffoldMessenger.of(context); try { final theme = await _themeService.importThemeFromClipboard(); - if (!context.mounted) return; + if (!mounted) return; if (theme != null) { - ScaffoldMessenger.of(context).showSnackBar( + messenger.showSnackBar( SnackBar( content: Text('主题"${theme.name}"导入成功'), backgroundColor: Colors.green, ), ); } else { - ScaffoldMessenger.of(context).showSnackBar( + messenger.showSnackBar( const SnackBar( content: Text('剪贴板中没有找到有效的主题数据'), backgroundColor: Colors.orange, @@ -607,7 +614,7 @@ class _ThemeManagementScreenState extends State ); } } catch (e) { - ScaffoldMessenger.of(context).showSnackBar( + messenger.showSnackBar( SnackBar( content: Text('导入失败: $e'), backgroundColor: Colors.red, @@ -664,6 +671,7 @@ class _ThemeManagementScreenState extends State } Future _importTheme(String input) async { + final messenger = ScaffoldMessenger.of(context); try { models.CustomThemeData theme; @@ -673,17 +681,17 @@ class _ThemeManagementScreenState extends State } else { // 从分享码导入 theme = await _themeService.importSharedTheme(input); - if (!context.mounted) return; + if (!mounted) return; } - ScaffoldMessenger.of(context).showSnackBar( + messenger.showSnackBar( SnackBar( content: Text('主题"${theme.name}"导入成功'), backgroundColor: Colors.green, ), ); } catch (e) { - ScaffoldMessenger.of(context).showSnackBar( + messenger.showSnackBar( SnackBar( content: Text('导入失败: $e'), backgroundColor: Colors.red, @@ -693,6 +701,10 @@ class _ThemeManagementScreenState extends State } Future _resetToDefault() async { + final navigator = Navigator.of(context); + final messenger = ScaffoldMessenger.of(context); + final navigator = Navigator.of(context); + final messenger = ScaffoldMessenger.of(context); final confirmed = await showDialog( context: context, builder: (context) => AlertDialog( @@ -700,11 +712,11 @@ class _ThemeManagementScreenState extends State content: const Text('确定要重置为系统默认主题吗?'), actions: [ TextButton( - onPressed: () => Navigator.of(context).pop(false), + onPressed: () => navigator.pop(false), child: const Text('取消'), ), ElevatedButton( - onPressed: () => Navigator.of(context).pop(true), + onPressed: () => navigator.pop(true), style: ElevatedButton.styleFrom( backgroundColor: Colors.black, foregroundColor: Colors.white, @@ -717,8 +729,8 @@ class _ThemeManagementScreenState extends State if (confirmed == true) { await _themeService.resetToSystemTheme(); - if (!context.mounted) return; - ScaffoldMessenger.of(context).showSnackBar( + if (!mounted) return; + messenger.showSnackBar( const SnackBar( content: Text('已重置为系统默认主题'), backgroundColor: Colors.green,