import 'dart:convert'; import 'package:shared_preferences/shared_preferences.dart'; class SharedPrefsWrapper { const SharedPrefsWrapper({ required this.key, required this.fromJson, }); static SharedPreferences? _sp; final String key; final T Function(dynamic json) fromJson; Future set( T e, [ List tags = const [], ]) async { _sp ??= await SharedPreferences.getInstance(); await _sp!.setString( key + tags.join('.'), jsonEncode(e), ); } Future get([ List filter = const [], ]) async { _sp ??= await SharedPreferences.getInstance(); final source = _sp!.getString( key + filter.join('.'), ); if (source == null) return null; final json = jsonDecode(source); return fromJson(json); } }