Start to build app skeleton
This commit is contained in:
		
							
								
								
									
										37
									
								
								moneymgr_mobile/lib/providers/settings.dart
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								moneymgr_mobile/lib/providers/settings.dart
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,37 @@
 | 
			
		||||
import 'package:flutter/material.dart';
 | 
			
		||||
import 'package:riverpod_annotation/riverpod_annotation.dart';
 | 
			
		||||
 | 
			
		||||
import '../../../services/storage/prefs.dart';
 | 
			
		||||
 | 
			
		||||
part 'settings.g.dart';
 | 
			
		||||
 | 
			
		||||
/// The current theme mode of the app.
 | 
			
		||||
///
 | 
			
		||||
/// When this provider is first read, it will read the saved value from storage,
 | 
			
		||||
/// and defaults to [ThemeMode.system] if the theme mode has not been set before.
 | 
			
		||||
@riverpod
 | 
			
		||||
class CurrentThemeMode extends _$CurrentThemeMode {
 | 
			
		||||
  @override
 | 
			
		||||
  ThemeMode build() {
 | 
			
		||||
    final prefs = ref.watch(prefsProvider).requireValue;
 | 
			
		||||
 | 
			
		||||
    // Load the saved theme mode setting from shared preferences.
 | 
			
		||||
    final themeModeName = prefs.getString('themeMode');
 | 
			
		||||
 | 
			
		||||
    // Return [ThemeMode] based on the saved setting, or [ThemeMode.system]
 | 
			
		||||
    // if there's no saved setting yet.
 | 
			
		||||
    return ThemeMode.values.singleWhere(
 | 
			
		||||
          (themeMode) => themeMode.name == themeModeName,
 | 
			
		||||
      orElse: () => ThemeMode.system,
 | 
			
		||||
    );
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  void set(ThemeMode themeMode) {
 | 
			
		||||
    final prefs = ref.read(prefsProvider).requireValue;
 | 
			
		||||
 | 
			
		||||
    // Save the new theme mode to shared preferences.
 | 
			
		||||
    prefs.setString('themeMode', themeMode.name);
 | 
			
		||||
 | 
			
		||||
    ref.invalidateSelf();
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user