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