Add an option to start on scans screen instead of capture screen
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||
import 'package:moneymgr_mobile/providers/settings.dart';
|
||||
import 'package:moneymgr_mobile/services/storage/prefs.dart';
|
||||
import 'package:moneymgr_mobile/utils/extensions.dart';
|
||||
|
||||
class SettingsScreen extends ConsumerWidget {
|
||||
@@ -8,6 +9,7 @@ class SettingsScreen extends ConsumerWidget {
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context, WidgetRef ref) {
|
||||
final prefs = ref.watch(prefsProvider).requireValue;
|
||||
final themeMode = ref.watch(currentThemeModeProvider);
|
||||
|
||||
void onTapThemeMode() =>
|
||||
@@ -15,6 +17,11 @@ class SettingsScreen extends ConsumerWidget {
|
||||
|
||||
void onTapLicenses() => context.showAppLicensePage();
|
||||
|
||||
handleToggleStartScreen(v) async {
|
||||
await prefs.setStartOnScansListScreen(v);
|
||||
ref.invalidate(prefsProvider);
|
||||
}
|
||||
|
||||
return Scaffold(
|
||||
appBar: AppBar(title: const Text('Settings')),
|
||||
body: ListView(
|
||||
@@ -25,6 +32,14 @@ class SettingsScreen extends ConsumerWidget {
|
||||
trailing: Text(themeMode.label),
|
||||
onTap: onTapThemeMode,
|
||||
),
|
||||
SwitchListTile(
|
||||
value: prefs.startOnScansListScreen(),
|
||||
onChanged: handleToggleStartScreen,
|
||||
title: Text("Start on scans screen"),
|
||||
subtitle: Text(
|
||||
"Do not start camera automatically on application startup",
|
||||
),
|
||||
),
|
||||
const Divider(),
|
||||
ListTile(
|
||||
leading: const Icon(Icons.info_outline),
|
||||
|
@@ -11,6 +11,7 @@ import 'package:moneymgr_mobile/routes/scan_details/scan_details.dart';
|
||||
import 'package:moneymgr_mobile/routes/scans_list/scans_list_screen.dart';
|
||||
import 'package:moneymgr_mobile/routes/settings/settings_screen.dart';
|
||||
import 'package:moneymgr_mobile/services/router/routes_list.dart';
|
||||
import 'package:moneymgr_mobile/services/storage/prefs.dart';
|
||||
import 'package:moneymgr_mobile/widgets/load_startup_data.dart';
|
||||
import 'package:moneymgr_mobile/widgets/scaffold_with_navigation.dart';
|
||||
import 'package:riverpod_annotation/riverpod_annotation.dart';
|
||||
@@ -29,6 +30,8 @@ GoRouter router(Ref ref) {
|
||||
authStateNotifier.value = value;
|
||||
});
|
||||
|
||||
final prefs = ref.read(prefsProvider).requireValue;
|
||||
|
||||
// This is the only place you need to define your navigation items. The items
|
||||
// will be propagated automatically to the router and the navigation bar/rail
|
||||
// of the scaffold.
|
||||
@@ -70,7 +73,7 @@ GoRouter router(Ref ref) {
|
||||
|
||||
final router = GoRouter(
|
||||
debugLogDiagnostics: true,
|
||||
initialLocation: navigationItems.first.path,
|
||||
initialLocation: prefs.startOnScansListScreen() ? scansPage : capturePage,
|
||||
routes: [
|
||||
GoRoute(path: homePage, builder: (_, __) => const Scaffold()),
|
||||
GoRoute(path: authPage, builder: (_, __) => const LoginScreen()),
|
||||
|
@@ -15,6 +15,14 @@ Future<SharedPreferencesWithCache> prefs(Ref ref) =>
|
||||
);
|
||||
|
||||
extension MoneyMgrSharedPreferences on SharedPreferencesWithCache {
|
||||
bool startOnScansListScreen() {
|
||||
return getBool("startOnScansListScreen") ?? false;
|
||||
}
|
||||
|
||||
Future<void> setStartOnScansListScreen(bool start) async {
|
||||
await setBool("startOnScansListScreen", start);
|
||||
}
|
||||
|
||||
ServerConfig? serverConfig() {
|
||||
final json = getString("serverConfig");
|
||||
if (json != null) return ServerConfig.fromJson(jsonDecode(json));
|
||||
|
Reference in New Issue
Block a user