I have created a singleton class for saving data to local storage with GetStorage
, here I have a bucket named userdata
and i want to save favouriteproductids
, cartitems
and many other list,
With this singleton class its easy to save any kind of data to local storage,
How to do same with Hive?
class MyLocalStorage {
late final GetStorage _storage;
static MyLocalStorage? _instance;
MyLocalStorage._internal();
factory MyLocalStorage.instance() {
_instance??=MyLocalStorage._internal();
return _instance!;
}
static Future<void> init(String bucketName) async
{
await GetStorage.init(bucketName);
_instance=MyLocalStorage._internal();
_instance!._storage=GetStorage(bucketName);
}
//save data
Future<void> saveData<T>(String key,T value) async{
await _storage.write(key, value);
}
T? readData<T>(String key) {
return _storage.read<T>(key);
}
Future<void> removeData(String key) async{
await _storage.remove(key);
}
Future<void> clearAll() async{
await _storage.erase();
}
}
uses of this class
void main()async
{
final WidgetsBinding widgetsBinding =
WidgetsFlutterBinding.ensureInitialized();
await GetStorage.init();
await MyLocalStorage.init('UserData');// bucket name
//saving string list to localstorage
List<String> favouriteIds=['1','4','5','6'];
MyLocalStorage.instance().saveData('Favourites', favouriteIds);
//saving object list to localstorage
List<CartModel> cartList=[
CartModel(productId: '1', title: 'a', qty: 1, amount: 399, imageUrl: ''),
CartModel(productId: '2', title: 'b', qty: 1, amount: 544, imageUrl: ''),
];
MyLocalStorage.instance().saveData('cart', cartList.map((e) => e.toJson()).toList());
}
1