mirror of
https://github.com/zjs81/meshcore-open.git
synced 2026-06-14 22:55:12 +10:00
b34d684e67
formats all dart files using `dart format .` from the root project dir this makes the code style repeatable by new contributors and makes PR review easier
35 lines
1.1 KiB
Dart
35 lines
1.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;
|
|
}
|
|
}
|