flutter:Get_Stroage数据存储

5,464 阅读2分钟

「这是我参与11月更文挑战的第26天,活动详情查看:2021最后一次更文挑战

背景

今天我们介绍一款轻量级的数据持久化的三方Get_Stroage,可与搭配get一起使用,也可以帮助我们在多个isolation之前同步数据

get_stroage介绍

那其实目前有很多的flutter数据持久化的三方我们为什么要使用get_stroage,最简单粗暴的原因,那就是快,所有的增删改查可以再一瞬间完成,来看下get_stroage与其他三方之间的数据对比

write.png

read.png

delete.png

看数据对比我们可以发现,读写删都拥有非常快的速度,至于为何可以做到这么快的速度,我们明天再介绍,今天我们先来看看使用方法

增删改查

那一个数据库肯定是绕不开增删改查的,那我们就来看下如何使用get_stroage

首先我们需要再main函数里边初始化一下GetStorage,初始化完成后我们就可以正常使用了

main() async {
  await GetStorage.init();
  runApp(App());
}

如果通过实例调用的话,先获取到GetStorage实例

final box = GetStorage();

写入信息

box.write('quote', 'GetX is the best');

读取信息

print(box.read('quote'));

删除信息

box.remove('quote');

也可以监听,所有键值对的改动,当然在你不需要了的时候务必将监听移除

//添加监听
box.listen((){
  print('box changed');
});
//移除监听
box.removeListen(listen);

当然如果你不想监听所有只想监听某一个的时候也可以

box.listenKey('key', (value){
  print('new key is $value');
});

清楚所有容器内数据

box.erase();

当你想创建多个容器时,也是可以的,还记得上面我们使用的初始化方法么,只需要在初始化的时候传入参数就可以了

await GetStorage.init('MyStorage');

当然get还提供了方便快捷的扩展方法,当成员变量的值发生改变时你不需要再次去存储数据,因为已经帮你存储好了,你只需要使用就好了

class MyPref {
  static final _otherBox = () => GetStorage('MyPref');

  final username = ''.val('username');
  final age = 0.val('age');
  final price = 1000.val('price', getBox: _otherBox);

  // or
  final username2 = ReadWriteValue('username', '');
  final age2 = ReadWriteValue('age', 0);
  final price2 = ReadWriteValue('price', '', _otherBox);
}

...

void updateAge() {
  final age = 0.val('age');
  // or 
  final age = ReadWriteValue('age', 0, () => box);
  // or 
  final age = Get.find<MyPref>().age;

  age.val = 1; // will save to box
  final realAge = age.val; // will read from box
}

结语

好了今天的Get_Stroage使用已经介绍完了, 明天一起看下源码是如何实现的

希望大家把一些好的三方分享出来,打在评论区,共同学习,共同进步

作为Flutter届的一个小学生,希望大家多多指教