diff --git a/lib/pages/account/accounts_page.dart b/lib/pages/account/accounts_page.dart index a3c017eb4..7a39cfc59 100644 --- a/lib/pages/account/accounts_page.dart +++ b/lib/pages/account/accounts_page.dart @@ -139,14 +139,14 @@ class _AccountsPageState extends ConsumerState { data: (accounts) { final groups = _reorderingGroups ?? _groupAccounts(accounts); - return ListView( + return SafeArea( + top: false, + child: ListView( padding: EdgeInsets.only( left: 12.0.scaled(context, ref), right: 12.0.scaled(context, ref), top: 8.0.scaled(context, ref), - bottom: widget.asTab - ? 8.0.scaled(context, ref) + 56 + MediaQuery.of(context).padding.bottom + 24 - : 8.0.scaled(context, ref), + bottom: 16.scaled(context, ref) ), children: [ if (accounts.isEmpty) @@ -237,7 +237,7 @@ class _AccountsPageState extends ConsumerState { }), ], ], - ); + )); }, loading: () => const Center(child: CircularProgressIndicator()), error: (err, stack) => Center( diff --git a/lib/pages/category/category_manage_page.dart b/lib/pages/category/category_manage_page.dart index 9fa97d8d3..4bfa35a07 100644 --- a/lib/pages/category/category_manage_page.dart +++ b/lib/pages/category/category_manage_page.dart @@ -84,6 +84,8 @@ class _CategoryManagePageState extends ConsumerState with Ti ), _buildTransferIconSetting(context, l10n, primaryColor), Expanded( + child: SafeArea( + top: false, child: categoriesWithCountAsync.when( loading: () => const Center(child: CircularProgressIndicator()), error: (error, stack) => Center(child: Text(l10n.categoryLoadFailed(error.toString()))), @@ -103,7 +105,7 @@ class _CategoryManagePageState extends ConsumerState with Ti ); }, ), - ), + )), ], ), ); diff --git a/lib/pages/main/analytics_page.dart b/lib/pages/main/analytics_page.dart index 751442629..5ef2cb544 100644 --- a/lib/pages/main/analytics_page.dart +++ b/lib/pages/main/analytics_page.dart @@ -864,7 +864,9 @@ class _AnalyticsPageState extends ConsumerState { _cycleTypeForward(); } }, - child: ListView( + child: SafeArea( + top: false, + child: ListView( padding: const EdgeInsets.all(16), children: [ AnalyticsSummary( @@ -1001,11 +1003,9 @@ class _AnalyticsPageState extends ConsumerState { selMonth: selMonth, subCategories: item.subCategories, ), - // 底部留白,避免被悬浮 Tab 栏遮挡 - SizedBox(height: 56 + 12 + MediaQuery.of(context).viewPadding.bottom + 16), ], ), - ); + )); }, ), ) diff --git a/lib/pages/main/home_page.dart b/lib/pages/main/home_page.dart index e84095150..23f7834e0 100644 --- a/lib/pages/main/home_page.dart +++ b/lib/pages/main/home_page.dart @@ -671,7 +671,9 @@ class _HomePageState extends ConsumerState { return Scaffold( backgroundColor: Theme.of(context).scaffoldBackgroundColor, // ⭐ 自适应背景色 - body: Column( + body: SafeArea( + top: false, + child: Column( children: [ Consumer(builder: (context, ref, _) { ref.watch(headerStyleProvider); @@ -1081,7 +1083,7 @@ class _HomePageState extends ConsumerState { ), ), ], - ), + )), ); } } diff --git a/lib/pages/main/mine_page.dart b/lib/pages/main/mine_page.dart index 4bb9b9b3c..f3c544191 100644 --- a/lib/pages/main/mine_page.dart +++ b/lib/pages/main/mine_page.dart @@ -67,6 +67,8 @@ class MinePage extends ConsumerWidget { content: _MinePageHeader(), ), Expanded( + child: SafeArea( + top: false, child: ListView( padding: EdgeInsets.zero, physics: const AlwaysScrollableScrollPhysics(), @@ -531,11 +533,9 @@ class MinePage extends ConsumerWidget { ), ), SizedBox(height: BeeDimens.p16.scaled(context, ref)), - // 底部留白,避免被悬浮 Tab 栏遮挡 - SizedBox(height: 56 + 12 + MediaQuery.of(context).viewPadding.bottom + 16), ], ), - ), + )), ], ), ); diff --git a/lib/pages/settings/appearance_settings_page.dart b/lib/pages/settings/appearance_settings_page.dart index d2cc70ad9..24f945c77 100644 --- a/lib/pages/settings/appearance_settings_page.dart +++ b/lib/pages/settings/appearance_settings_page.dart @@ -75,6 +75,8 @@ class AppearanceSettingsPage extends ConsumerWidget { showBack: true, ), Expanded( + child: SafeArea( + top: false, child: ListView( padding: const EdgeInsets.all(16), children: [ @@ -261,7 +263,7 @@ class AppearanceSettingsPage extends ConsumerWidget { ), ], ), - ), + )), ], ), ); diff --git a/lib/pages/settings/font_settings_page.dart b/lib/pages/settings/font_settings_page.dart index 74748a223..167951563 100644 --- a/lib/pages/settings/font_settings_page.dart +++ b/lib/pages/settings/font_settings_page.dart @@ -31,6 +31,8 @@ class FontSettingsPage extends ConsumerWidget { children: [ PrimaryHeader(title: AppLocalizations.of(context)!.mineDisplayScale, showBack: true, compact: true), Expanded( + child: SafeArea( + top: false, child: ListView( padding: const EdgeInsets.fromLTRB(16, 8, 16, 16), children: [ @@ -74,7 +76,7 @@ class FontSettingsPage extends ConsumerWidget { ?.copyWith(color: BeeTokens.textSecondary(context))), ], ), - ), + )), ], ), ); diff --git a/lib/pages/settings/header_skin_page.dart b/lib/pages/settings/header_skin_page.dart index 4f046c03e..a8b13e4f4 100644 --- a/lib/pages/settings/header_skin_page.dart +++ b/lib/pages/settings/header_skin_page.dart @@ -48,6 +48,7 @@ class HeaderSkinPage extends ConsumerWidget { showBack: true, ), Expanded( + child: SafeArea( child: GridView.count( crossAxisCount: 2, padding: const EdgeInsets.all(16), @@ -66,7 +67,7 @@ class HeaderSkinPage extends ConsumerWidget { ), ], ), - ), + )), ], ), ); diff --git a/lib/pages/settings/help_center_page.dart b/lib/pages/settings/help_center_page.dart index d0ff5fe07..88becf74a 100644 --- a/lib/pages/settings/help_center_page.dart +++ b/lib/pages/settings/help_center_page.dart @@ -178,6 +178,8 @@ class _HelpCenterPageState extends ConsumerState { ], ), Expanded( + child: SafeArea( + top: false, child: Stack( children: [ if (_controller != null && !_failed) @@ -230,7 +232,7 @@ class _HelpCenterPageState extends ConsumerState { ), ], ), - ), + )), ], ), ), diff --git a/lib/pages/settings/personalize_page.dart b/lib/pages/settings/personalize_page.dart index f26330596..0c2e62823 100644 --- a/lib/pages/settings/personalize_page.dart +++ b/lib/pages/settings/personalize_page.dart @@ -64,6 +64,7 @@ class _PersonalizePageState extends ConsumerState { compact: true, ), Expanded( + child: SafeArea( child: ListView( padding: const EdgeInsets.all(16), children: [ @@ -98,7 +99,7 @@ class _PersonalizePageState extends ConsumerState { ), ], ), - ), + )), ], ), ); diff --git a/lib/pages/settings/reminder_settings_page.dart b/lib/pages/settings/reminder_settings_page.dart index 52ba3a125..7bd7cbc82 100644 --- a/lib/pages/settings/reminder_settings_page.dart +++ b/lib/pages/settings/reminder_settings_page.dart @@ -27,6 +27,7 @@ class ReminderSettingsPage extends ConsumerWidget { showBack: true, ), Expanded( + child: SafeArea( child: ListView( padding: EdgeInsets.zero, children: [ @@ -390,7 +391,7 @@ class ReminderSettingsPage extends ConsumerWidget { const SizedBox(height: 32), ], ), - ), + )), ], ), ); diff --git a/lib/pages/settings/shortcuts_guide_page.dart b/lib/pages/settings/shortcuts_guide_page.dart index dc08a8a5f..46144ed71 100644 --- a/lib/pages/settings/shortcuts_guide_page.dart +++ b/lib/pages/settings/shortcuts_guide_page.dart @@ -22,7 +22,9 @@ class ShortcutsGuidePage extends ConsumerWidget { return Scaffold( backgroundColor: BeeTokens.scaffoldBackground(context), - body: Column( + body: SafeArea( + top: false, + child: Column( children: [ PrimaryHeader( title: l10n.shortcutsGuide, @@ -56,7 +58,7 @@ class ShortcutsGuidePage extends ConsumerWidget { ), ), ], - ), + )), ); } diff --git a/lib/pages/transaction/recurring_transaction_edit_page.dart b/lib/pages/transaction/recurring_transaction_edit_page.dart index a7b571d27..3ef9a57d0 100644 --- a/lib/pages/transaction/recurring_transaction_edit_page.dart +++ b/lib/pages/transaction/recurring_transaction_edit_page.dart @@ -114,8 +114,9 @@ class _RecurringTransactionEditPageState extends ConsumerState { final type = item.$1 as String; if (type == 'bottomSpacer') { - // 悬浮 Tab 栏高度(56) + 浮动间距(12) + 安全区 + 额外间距 - final bottomPadding = MediaQuery.of(context).viewPadding.bottom; - return SizedBox(height: 56 + 12 + bottomPadding + 16); + return SizedBox(height: 16); } if (type == 'header') { diff --git a/lib/widgets/category/category_selector.dart b/lib/widgets/category/category_selector.dart index 56584c0f6..77fd68275 100644 --- a/lib/widgets/category/category_selector.dart +++ b/lib/widgets/category/category_selector.dart @@ -299,10 +299,12 @@ class _CategorySelectorState extends ConsumerState { ); displayItems.add(const SizedBox(height: 12)); - return ListView( + return SafeArea( + top: false, + child: ListView( padding: const EdgeInsets.fromLTRB(12, 12, 12, 12), children: displayItems, - ); + )); }, ); },