mirror of
https://github.com/zjs81/meshcore-open.git
synced 2026-04-20 22:13:48 +00:00
33 lines
1 KiB
Dart
33 lines
1 KiB
Dart
import 'package:shared_preferences/shared_preferences.dart';
|
|
|
|
/// Singleton wrapper for SharedPreferences to avoid redundant getInstance() calls.
|
|
///
|
|
/// BEFORE: Every storage operation called SharedPreferences.getInstance()
|
|
/// AFTER: Single getInstance() on app startup, reused throughout lifecycle
|
|
///
|
|
/// This eliminates 30+ redundant platform channel calls across the app.
|
|
class PrefsManager {
|
|
PrefsManager._();
|
|
|
|
static SharedPreferences? _instance;
|
|
|
|
/// Initialize the cached instance. Call this once during app startup in main().
|
|
static Future<void> initialize() async {
|
|
_instance ??= await SharedPreferences.getInstance();
|
|
}
|
|
|
|
/// Get the cached SharedPreferences instance.
|
|
/// Throws StateError if initialize() hasn't been called.
|
|
static SharedPreferences get instance {
|
|
if (_instance == null) {
|
|
throw StateError(
|
|
'PrefsManager not initialized. Call PrefsManager.initialize() in main() before use.');
|
|
}
|
|
return _instance!;
|
|
}
|
|
|
|
/// For testing: reset the instance
|
|
static void reset() {
|
|
_instance = null;
|
|
}
|
|
}
|