From ec594595c92fb1e946391d84b8978d1ee3f75313 Mon Sep 17 00:00:00 2001 From: RarDog Date: Fri, 4 Sep 2026 18:42:00 +0300 Subject: [PATCH] fix: adjust settings button position and backup/json buttons layout (v3.0.9) --- README.md | 2 +- lib/app/app_version.dart | 4 +- lib/app/changelog.dart | 9 ++ .../presentation/settings_screen.dart | 84 +++++++++++++------ lib/shared/widgets/app_shell.dart | 2 +- pubspec.yaml | 2 +- 6 files changed, 73 insertions(+), 30 deletions(-) diff --git a/README.md b/README.md index 55dda09..301e2f1 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@

- Version 3.0.8 + Version 3.0.9 Flutter Platforms Wiki diff --git a/lib/app/app_version.dart b/lib/app/app_version.dart index 0e899b9..f059ecf 100644 --- a/lib/app/app_version.dart +++ b/lib/app/app_version.dart @@ -1,3 +1,3 @@ -const appDisplayVersion = '3.0.8'; -const appBuildNumber = 59; +const appDisplayVersion = '3.0.9'; +const appBuildNumber = 60; const appReleaseChannel = 'Stable'; diff --git a/lib/app/changelog.dart b/lib/app/changelog.dart index a55fa78..ab9dcba 100644 --- a/lib/app/changelog.dart +++ b/lib/app/changelog.dart @@ -1,4 +1,13 @@ const lunarisChangelog = [ + LunarisChange( + version: '3.0.9', + title: 'Коррекция позиции кнопки настроек и отображения кнопок JSON и бэкапа', + bullets: [ + 'Оптимальная позиция кнопки настроек: парящая стеклянная кнопка опущена прямо к нижней навигационной панели, без избыточного завышения над карточками контента.', + 'Полная видимость кнопок JSON и бэкапа: добавлен увеличенный нижний отступ прокрутки в настройках, чтобы панель навигации не перекрывала кнопки при скролле до конца.', + 'Улучшенный дизайн и сетка кнопок экспорта/импорта: кнопки бэкапа и JSON организованы в симметричные аккуратные строки с яркими акцентными бейджами.', + ], + ), LunarisChange( version: '3.0.8', title: 'iPhone Liquid Glass — раздел «Настройки» и парящая стеклянная кнопка', diff --git a/lib/features/settings/presentation/settings_screen.dart b/lib/features/settings/presentation/settings_screen.dart index 6b51da8..f769148 100644 --- a/lib/features/settings/presentation/settings_screen.dart +++ b/lib/features/settings/presentation/settings_screen.dart @@ -187,7 +187,12 @@ class _SettingsContentState extends ConsumerState<_SettingsContent> { Expanded( child: SingleChildScrollView( controller: _scrollController, - padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 12), + padding: EdgeInsets.fromLTRB( + 16, + 12, + 16, + 120 + MediaQuery.paddingOf(context).bottom, + ), child: Align( alignment: Alignment.topCenter, child: ConstrainedBox( @@ -2547,35 +2552,64 @@ class _HeroBrandBanner extends StatelessWidget { Text( isRu ? 'Резервное копирование и экспорт' : 'Backup & JSON Export', style: theme.textTheme.titleSmall?.copyWith( - fontWeight: FontWeight.w600, - color: theme.colorScheme.onSurfaceVariant, + fontWeight: FontWeight.w700, + letterSpacing: -0.2, ), ), const SizedBox(height: 12), - Wrap( - spacing: 10, - runSpacing: 10, - alignment: WrapAlignment.center, + Column( + crossAxisAlignment: CrossAxisAlignment.stretch, children: [ - OutlinedButton.icon( - onPressed: onExportBackup, - icon: const Icon(Icons.file_upload_rounded, size: 18), - label: Text(isRu ? 'Экспорт бэкапа' : 'Export backup'), + Row( + children: [ + Expanded( + child: OutlinedButton.icon( + onPressed: onExportBackup, + icon: const Icon(Icons.file_upload_rounded, size: 18), + label: Text( + isRu ? 'Экспорт бэкапа' : 'Export backup', + overflow: TextOverflow.ellipsis, + ), + ), + ), + const SizedBox(width: 10), + Expanded( + child: OutlinedButton.icon( + onPressed: onImportBackup, + icon: const Icon(Icons.file_download_rounded, size: 18), + label: Text( + isRu ? 'Импорт бэкапа' : 'Import backup', + overflow: TextOverflow.ellipsis, + ), + ), + ), + ], ), - OutlinedButton.icon( - onPressed: onImportBackup, - icon: const Icon(Icons.file_download_rounded, size: 18), - label: Text(isRu ? 'Импорт бэкапа' : 'Import backup'), - ), - OutlinedButton.icon( - onPressed: onExportJson, - icon: const Icon(Icons.upload_file_rounded, size: 18), - label: const Text('JSON Export'), - ), - OutlinedButton.icon( - onPressed: onImportJson, - icon: const Icon(Icons.download_for_offline_rounded, size: 18), - label: const Text('JSON Import'), + const SizedBox(height: 10), + Row( + children: [ + Expanded( + child: FilledButton.tonalIcon( + onPressed: onExportJson, + icon: const Icon(Icons.data_object_rounded, size: 18), + label: Text( + isRu ? 'JSON Экспорт' : 'JSON Export', + overflow: TextOverflow.ellipsis, + ), + ), + ), + const SizedBox(width: 10), + Expanded( + child: FilledButton.tonalIcon( + onPressed: onImportJson, + icon: const Icon(Icons.download_for_offline_rounded, size: 18), + label: Text( + isRu ? 'JSON Импорт' : 'JSON Import', + overflow: TextOverflow.ellipsis, + ), + ), + ), + ], ), ], ), diff --git a/lib/shared/widgets/app_shell.dart b/lib/shared/widgets/app_shell.dart index a6ea203..1cb2f6d 100644 --- a/lib/shared/widgets/app_shell.dart +++ b/lib/shared/widgets/app_shell.dart @@ -297,7 +297,7 @@ class _MobileShell extends StatelessWidget { floatingActionButton: location == '/settings' ? null : Padding( - padding: const EdgeInsets.only(bottom: 68, right: 4), + padding: const EdgeInsets.only(bottom: 0, right: 2), child: _LiquidGlassSettingsButton( ru: ru, onTap: () => context.go('/settings'), diff --git a/pubspec.yaml b/pubspec.yaml index a0e2955..600608d 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,7 +1,7 @@ name: gel_rule_app description: Local backend/core layer for a Flutter booru browser app. publish_to: "none" -version: 3.0.8+59 +version: 3.0.9+60 environment: sdk: ">=3.3.0 <4.0.0"