import 'package:riverpod_annotation/riverpod_annotation.dart'; import 'package:shared_preferences/shared_preferences.dart'; part 'navigation_provider.g.dart'; /// Key for storing last tab index in SharedPreferences const String _lastTabIndexKey = 'last_tab_index'; /// Default tab index (Library tab) const int _defaultTabIndex = 0; /// Provider for navigation state management and persistence @riverpod class NavigationState extends _$NavigationState { @override int build() { _loadLastTabIndex(); return _defaultTabIndex; // Default value until loaded } /// Load last tab index from SharedPreferences Future _loadLastTabIndex() async { final prefs = await SharedPreferences.getInstance(); final lastIndex = prefs.getInt(_lastTabIndexKey); if (lastIndex != null && lastIndex >= 0 && lastIndex <= 2) { state = lastIndex; } } /// Set tab index and persist to SharedPreferences Future setTabIndex(int index) async { if (index < 0 || index > 2) { return; // Invalid index, ignore } state = index; final prefs = await SharedPreferences.getInstance(); await prefs.setInt(_lastTabIndexKey, index); } }