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