diff --git a/build/app/outputs/flutter-apk/app-arm64-v8a-release.apk b/build/app/outputs/flutter-apk/app-arm64-v8a-release.apk index 2f14683..2c69f4a 100644 Binary files a/build/app/outputs/flutter-apk/app-arm64-v8a-release.apk and b/build/app/outputs/flutter-apk/app-arm64-v8a-release.apk differ diff --git a/lib/features/packs/pack_updater.dart b/lib/features/packs/pack_updater.dart index 2256dae..72f21fd 100644 --- a/lib/features/packs/pack_updater.dart +++ b/lib/features/packs/pack_updater.dart @@ -55,6 +55,7 @@ class PackUpdater { } catch (e, s) { log('Error when updating packs', error: e, stackTrace: s); print('Error when updating pack: ${e}'); + // Future.delayed(Duration(seconds: 5), () => updateAvailablePacks()); } finally { print('Updating packs complete'); if (_updateCompleter?.isCompleted == false) { diff --git a/lib/pages/settgins_page.dart b/lib/pages/settgins_page.dart index 88b9ec4..b498786 100644 --- a/lib/pages/settgins_page.dart +++ b/lib/pages/settgins_page.dart @@ -23,11 +23,10 @@ import '../widgets/shared_pref_button.dart'; @RoutePage() class SettingsPage extends StatelessWidget { - void _initAdmin() { if (!getIt.isRegistered()) { getIt.registerLazySingleton( - () => AdminApi(getIt.get().dio)); + () => AdminApi(getIt.get().dio)); print('set admin'); } } @@ -52,111 +51,105 @@ class SettingsPage extends StatelessWidget { color: borderGray.withOpacity(0.2), ), Expanded( - child: ListView( - children: [ - Expanded( - child: Padding( - padding: EdgeInsets.symmetric(horizontal: 10.0.w), - child: Column( - mainAxisAlignment: MainAxisAlignment.end, - children: [ - SimpleTile.text( - onLongTap: () async { - final r = await locator.userManager.deleteUser(); - if (!r) { - showInfoDialog( - 'Не удалось удалить аккаунт\nПопробуйте перелогиниться', - ); - } - }, - text: 'Удалить аккаунт (зажми)', + child: Padding( + padding: EdgeInsets.symmetric(horizontal: 10.0.w), + child: SingleChildScrollView( + reverse: true, + child: Column( + children: [ + ...[ + SimpleTile.text( + onLongTap: () async { + final r = await locator.userManager.deleteUser(); + if (!r) { + showInfoDialog( + 'Не удалось удалить аккаунт\nПопробуйте перелогиниться', + ); + } + }, + text: 'Удалить аккаунт (зажми)', + ), + MobileSharedPrefButton.builder( + spKey: 'dark_theme', + builder: (enabled, _) => AbsorbPointer( + child: SwitchTile( + text: 'Темная тема', + value: enabled ?? false, + ), ), + setOnTap: (v) { + final darkTheme = !(v ?? false); + themeNotifier.value = + darkTheme ? ThemeMode.dark : ThemeMode.light; + return darkTheme; + }, + ), + MobileSharedPrefButton.builder( + spKey: 'sound_on', + builder: (enabled, _) => AbsorbPointer( + child: SwitchTile( + text: 'Звук', + value: enabled ?? false, + ), + ), + setOnTap: (v) => !(v ?? false), + ), + MobileSharedPrefButton.builder( + spKey: 'auto_play_sound_view', + builder: (enabled, _) => AbsorbPointer( + child: SwitchTile( + text: 'Авто воспроизведение при просмотре', + value: enabled ?? false, + ), + ), + setOnTap: (v) => !(v ?? false), + ), + MobileSharedPrefButton.builder( + spKey: 'auto_play_sound_tests', + builder: (enabled, _) => AbsorbPointer( + child: SwitchTile( + text: 'Авто воспроизведение в тестах', + value: enabled ?? false, + ), + ), + setOnTap: (v) => !(v ?? false), + ), + SimpleTile.text( + text: 'Скорость чтения', + trail: MobileSharedPrefButton.builder( + spKey: 'sound_speed', + builder: (v, s) => MnemoSlider( + onChanged: (value) => s(value), + value: v ?? 1.0, + ), + shouldRebuild: (v) => false, + ), + ), + if (ADMIN_BUILD) MobileSharedPrefButton.builder( - spKey: 'dark_theme', + spKey: 'show_admin', builder: (enabled, _) => AbsorbPointer( child: SwitchTile( - text: 'Темная тема', + text: 'Show admin', value: enabled ?? false, ), ), setOnTap: (v) { - final darkTheme = !(v ?? false); - themeNotifier.value = - darkTheme ? ThemeMode.dark : ThemeMode.light; - return darkTheme; + final val = !(v ?? false); + if (val) { + _initAdmin(); + } + return val; }, ), - MobileSharedPrefButton.builder( - spKey: 'sound_on', - builder: (enabled, _) => AbsorbPointer( - child: SwitchTile( - text: 'Звук', - value: enabled ?? false, - ), + if (ADMIN_BUILD) ..._adminTiles(context), + ].expand((widget) => [ + widget, + Divider( + height: 1, + color: borderGray.withOpacity(0.2), ), - setOnTap: (v) => !(v ?? false), - ), - MobileSharedPrefButton.builder( - spKey: 'auto_play_sound_view', - builder: (enabled, _) => AbsorbPointer( - child: SwitchTile( - text: 'Авто воспроизведение при просмотре', - value: enabled ?? false, - ), - ), - setOnTap: (v) => !(v ?? false), - ), - MobileSharedPrefButton.builder( - spKey: 'auto_play_sound_tests', - builder: (enabled, _) => AbsorbPointer( - child: SwitchTile( - text: 'Авто воспроизведение в тестах', - value: enabled ?? false, - ), - ), - setOnTap: (v) => !(v ?? false), - ), - SimpleTile.text( - text: 'Скорость чтения', - trail: MobileSharedPrefButton.builder( - spKey: 'sound_speed', - builder: (v, s) => MnemoSlider( - onChanged: (value) => s(value), - value: v ?? 1.0, - ), - shouldRebuild: (v) => false, - ), - ), - if (ADMIN_BUILD) - MobileSharedPrefButton.builder( - spKey: 'show_admin', - builder: (enabled, _) => AbsorbPointer( - child: SwitchTile( - text: 'Show admin', - value: enabled ?? false, - ), - ), - setOnTap: (v) { - final val = !(v ?? false); - if (val) { - _initAdmin(); - } - return val; - }, - ), - if (ADMIN_BUILD) ..._adminTiles(context), - ].expand((widget) => [ - widget, - Divider( - height: 1, - color: borderGray.withOpacity(0.2), - ), - ]).toList(), - ), - ), - ), - Column( - children: [ + ]), Padding( padding: EdgeInsets.only(left: 10.0.w, right: 10.w, top: 32.h), @@ -172,7 +165,7 @@ class SettingsPage extends StatelessWidget { ), ], ), - ], + ), ), ), const BigBackButton(),