spk
This commit is contained in:
parent
b7794408f8
commit
39b91a5fb3
3 changed files with 91 additions and 97 deletions
Binary file not shown.
|
|
@ -55,6 +55,7 @@ class PackUpdater {
|
||||||
} catch (e, s) {
|
} catch (e, s) {
|
||||||
log('Error when updating packs', error: e, stackTrace: s);
|
log('Error when updating packs', error: e, stackTrace: s);
|
||||||
print('Error when updating pack: ${e}');
|
print('Error when updating pack: ${e}');
|
||||||
|
// Future.delayed(Duration(seconds: 5), () => updateAvailablePacks());
|
||||||
} finally {
|
} finally {
|
||||||
print('Updating packs complete');
|
print('Updating packs complete');
|
||||||
if (_updateCompleter?.isCompleted == false) {
|
if (_updateCompleter?.isCompleted == false) {
|
||||||
|
|
|
||||||
|
|
@ -23,11 +23,10 @@ import '../widgets/shared_pref_button.dart';
|
||||||
|
|
||||||
@RoutePage()
|
@RoutePage()
|
||||||
class SettingsPage extends StatelessWidget {
|
class SettingsPage extends StatelessWidget {
|
||||||
|
|
||||||
void _initAdmin() {
|
void _initAdmin() {
|
||||||
if (!getIt.isRegistered<AdminApi>()) {
|
if (!getIt.isRegistered<AdminApi>()) {
|
||||||
getIt.registerLazySingleton<AdminApi>(
|
getIt.registerLazySingleton<AdminApi>(
|
||||||
() => AdminApi(getIt.get<DioProvider>().dio));
|
() => AdminApi(getIt.get<DioProvider>().dio));
|
||||||
print('set admin');
|
print('set admin');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -52,111 +51,105 @@ class SettingsPage extends StatelessWidget {
|
||||||
color: borderGray.withOpacity(0.2),
|
color: borderGray.withOpacity(0.2),
|
||||||
),
|
),
|
||||||
Expanded(
|
Expanded(
|
||||||
child: ListView(
|
child: Padding(
|
||||||
children: [
|
padding: EdgeInsets.symmetric(horizontal: 10.0.w),
|
||||||
Expanded(
|
child: SingleChildScrollView(
|
||||||
child: Padding(
|
reverse: true,
|
||||||
padding: EdgeInsets.symmetric(horizontal: 10.0.w),
|
child: Column(
|
||||||
child: Column(
|
children: [
|
||||||
mainAxisAlignment: MainAxisAlignment.end,
|
...[
|
||||||
children: [
|
SimpleTile.text(
|
||||||
SimpleTile.text(
|
onLongTap: () async {
|
||||||
onLongTap: () async {
|
final r = await locator.userManager.deleteUser();
|
||||||
final r = await locator.userManager.deleteUser();
|
if (!r) {
|
||||||
if (!r) {
|
showInfoDialog(
|
||||||
showInfoDialog(
|
'Не удалось удалить аккаунт\nПопробуйте перелогиниться',
|
||||||
'Не удалось удалить аккаунт\nПопробуйте перелогиниться',
|
);
|
||||||
);
|
}
|
||||||
}
|
},
|
||||||
},
|
text: 'Удалить аккаунт (зажми)',
|
||||||
text: 'Удалить аккаунт (зажми)',
|
),
|
||||||
|
MobileSharedPrefButton<bool>.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<bool>.builder(
|
||||||
|
spKey: 'sound_on',
|
||||||
|
builder: (enabled, _) => AbsorbPointer(
|
||||||
|
child: SwitchTile(
|
||||||
|
text: 'Звук',
|
||||||
|
value: enabled ?? false,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
setOnTap: (v) => !(v ?? false),
|
||||||
|
),
|
||||||
|
MobileSharedPrefButton<bool>.builder(
|
||||||
|
spKey: 'auto_play_sound_view',
|
||||||
|
builder: (enabled, _) => AbsorbPointer(
|
||||||
|
child: SwitchTile(
|
||||||
|
text: 'Авто воспроизведение при просмотре',
|
||||||
|
value: enabled ?? false,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
setOnTap: (v) => !(v ?? false),
|
||||||
|
),
|
||||||
|
MobileSharedPrefButton<bool>.builder(
|
||||||
|
spKey: 'auto_play_sound_tests',
|
||||||
|
builder: (enabled, _) => AbsorbPointer(
|
||||||
|
child: SwitchTile(
|
||||||
|
text: 'Авто воспроизведение в тестах',
|
||||||
|
value: enabled ?? false,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
setOnTap: (v) => !(v ?? false),
|
||||||
|
),
|
||||||
|
SimpleTile.text(
|
||||||
|
text: 'Скорость чтения',
|
||||||
|
trail: MobileSharedPrefButton<double>.builder(
|
||||||
|
spKey: 'sound_speed',
|
||||||
|
builder: (v, s) => MnemoSlider(
|
||||||
|
onChanged: (value) => s(value),
|
||||||
|
value: v ?? 1.0,
|
||||||
|
),
|
||||||
|
shouldRebuild: (v) => false,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
if (ADMIN_BUILD)
|
||||||
MobileSharedPrefButton<bool>.builder(
|
MobileSharedPrefButton<bool>.builder(
|
||||||
spKey: 'dark_theme',
|
spKey: 'show_admin',
|
||||||
builder: (enabled, _) => AbsorbPointer(
|
builder: (enabled, _) => AbsorbPointer(
|
||||||
child: SwitchTile(
|
child: SwitchTile(
|
||||||
text: 'Темная тема',
|
text: 'Show admin',
|
||||||
value: enabled ?? false,
|
value: enabled ?? false,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
setOnTap: (v) {
|
setOnTap: (v) {
|
||||||
final darkTheme = !(v ?? false);
|
final val = !(v ?? false);
|
||||||
themeNotifier.value =
|
if (val) {
|
||||||
darkTheme ? ThemeMode.dark : ThemeMode.light;
|
_initAdmin();
|
||||||
return darkTheme;
|
}
|
||||||
|
return val;
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
MobileSharedPrefButton<bool>.builder(
|
if (ADMIN_BUILD) ..._adminTiles(context),
|
||||||
spKey: 'sound_on',
|
].expand((widget) => [
|
||||||
builder: (enabled, _) => AbsorbPointer(
|
widget,
|
||||||
child: SwitchTile(
|
Divider(
|
||||||
text: 'Звук',
|
height: 1,
|
||||||
value: enabled ?? false,
|
color: borderGray.withOpacity(0.2),
|
||||||
),
|
|
||||||
),
|
),
|
||||||
setOnTap: (v) => !(v ?? false),
|
]),
|
||||||
),
|
|
||||||
MobileSharedPrefButton<bool>.builder(
|
|
||||||
spKey: 'auto_play_sound_view',
|
|
||||||
builder: (enabled, _) => AbsorbPointer(
|
|
||||||
child: SwitchTile(
|
|
||||||
text: 'Авто воспроизведение при просмотре',
|
|
||||||
value: enabled ?? false,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
setOnTap: (v) => !(v ?? false),
|
|
||||||
),
|
|
||||||
MobileSharedPrefButton<bool>.builder(
|
|
||||||
spKey: 'auto_play_sound_tests',
|
|
||||||
builder: (enabled, _) => AbsorbPointer(
|
|
||||||
child: SwitchTile(
|
|
||||||
text: 'Авто воспроизведение в тестах',
|
|
||||||
value: enabled ?? false,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
setOnTap: (v) => !(v ?? false),
|
|
||||||
),
|
|
||||||
SimpleTile.text(
|
|
||||||
text: 'Скорость чтения',
|
|
||||||
trail: MobileSharedPrefButton<double>.builder(
|
|
||||||
spKey: 'sound_speed',
|
|
||||||
builder: (v, s) => MnemoSlider(
|
|
||||||
onChanged: (value) => s(value),
|
|
||||||
value: v ?? 1.0,
|
|
||||||
),
|
|
||||||
shouldRebuild: (v) => false,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
if (ADMIN_BUILD)
|
|
||||||
MobileSharedPrefButton<bool>.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(
|
||||||
padding:
|
padding:
|
||||||
EdgeInsets.only(left: 10.0.w, right: 10.w, top: 32.h),
|
EdgeInsets.only(left: 10.0.w, right: 10.w, top: 32.h),
|
||||||
|
|
@ -172,7 +165,7 @@ class SettingsPage extends StatelessWidget {
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
],
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
const BigBackButton(),
|
const BigBackButton(),
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue