【备战春招】第14天 Flutter中的数据存储
2023/2/20 4:20:35
本文主要是介绍【备战春招】第14天 Flutter中的数据存储,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
课程名称:Flutter从入门到进阶 实战携程网App 一网打尽核心技术
课程章节:Flutter进阶提升:网络编程与数据存储技术
课程讲师:CrazyCodeBoy
课程内容
数据存储是开发APP必不可少的一部分,比如页面缓存,从网络上获取数据的本地持久化等。
shared_preferences
shared_preferences是一个本地数据存取的插件,具有以下特点:
- 简单的,异步的,持久化的key-value存储系统;
- 在Android上是基于SharedPreferences实现的;
- 在iOS上基于NSUserDefaults的;
使用shared_preferences,需要先在pubspec.yaml中导入插件
dependencies: shared_preferences: ^0.5.1+
与 Android 中的 SharedPreferences 中类似,shared_preferences也对原始的数据类型(int、string、bool、double)提供了相应的 getter 和 setter 方法。
final prefs = await SharedPreferences.getInstance(); //存储数据 prefs.setInt('counter', counter); //读取数据 final counter = prefs.getInt('counter') ?? 0;} //删除数据 prefs.remove('counter');
还可以在读写之前,检查一下数据是否存在,通过containsKey()方法,方法返回一个bool值。
prefs.containsKey("counter")
基于shared_preferences实现一个计数器效果的 demo。
void main() { runApp(MaterialApp( home: Scaffold( appBar: AppBar( title: Text('shared_preferences'), ), body: _CounterWidget(), ), )); } class _CounterWidget extends StatefulWidget { @override _CounterState createState() => _CounterState(); } class _CounterState extends State<_CounterWidget> { String countString = ''; String localCount = ''; @override Widget build(BuildContext context) { return Center( child: Column( children: <Widget>[ RaisedButton( onPressed: _incrementCounter, child: Text('Increment Counter')), RaisedButton(onPressed: _getCounter, child: Text('Get Counter')), Text( countString, style: TextStyle(fontSize: 20), ), Text( 'result:' + localCount, style: TextStyle(fontSize: 20), ), ], ), ); } _incrementCounter() async { SharedPreferences prefs = await SharedPreferences.getInstance(); setState(() { countString = countString + " 1"; }); int counter = (prefs.getInt('counter') ?? 0) + 1; await prefs.setInt('counter', counter); } _getCounter() async { SharedPreferences prefs = await SharedPreferences.getInstance(); setState(() { localCount = prefs.getInt('counter').toString(); }); } }
课程收获
在使用shared_preferences时每次都需要去获取它的实例,如果多个地方用到,那么每次都要实例化一次。这样代码的可读性差,后期的维护成本也变得很高,而且还不支持存储Map类型,可以把shared_preferences封装一个通用而且使用更简单的库。
这篇关于【备战春招】第14天 Flutter中的数据存储的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-11有哪些好用的家政团队管理工具?
- 2025-01-11营销人必看的GTM五个指标
- 2025-01-11办公软件在直播电商前期筹划中的应用与推荐
- 2025-01-11提升组织效率:上级管理者如何优化跨部门任务分配
- 2025-01-11酒店精细化运营背后的协同工具支持
- 2025-01-11跨境电商选品全攻略:工具使用、市场数据与选品策略
- 2025-01-11数据驱动酒店管理:在线工具的核心价值解析
- 2025-01-11cursor试用出现:Too many free trial accounts used on this machine 的解决方法
- 2025-01-11百万架构师第十四课:源码分析:Spring 源码分析:深入分析IOC那些鲜为人知的细节|JavaGuide
- 2025-01-11不得不了解的高效AI办公工具API