SharedPreferences存储和缓存少量的键值对信息(比如记录用户是否阅读了公告,或者简单的计数),可以使用SharedPreferences。SharedPreferences将通过原生平台相关机制为简单的键值对数据提供持久化存储,即在iOS上使用NSUserDefaults,在Android上使用SharedPreferences。SharedPreferences的使用非常简单方便。但是需要注意的是,只有基本类型的数据才能以键值对的形式存储,比如int、double、bool、string等。1.pubspec.yaml引入shared_preferences:0.5.12+42.codeimport'dart:developer';导入“包:flutter/material.dart”;导入“包:shared_preferences/shared_preferences.dart”;voidmain(){runApp(MyApp());}classMyAppextendsStatelessWidget{//这个小部件是你应用程序的根。@overrideWidgetbuild(BuildContextcontext){returnMaterialApp(title:'FlutterDemo',theme:ThemeData(primarySwatch:Colors.blue,),home:MyHomePage(title:'FlutterDemoHomePage'),);}}classMyHomePageextendsStatefulWidget{MyHomePage({Keykey,this.title}):super(key:key);最终字符串标题;@override_MyHomePageStatecreateState()=>_MyHomePageState();}class_MyHomePageStateextendsState{int_counter=0;//涉及耗时的文件读写,将这些操作以异步的方式包装起来//读取得到SharedPreferences中计数器的值作为键Future_loadCounter()async{SharedPreferencesprefs=awaitSharedPreferences.getInstance();intcounter=(prefs.getInt('counter')??0);退货柜台;}//在SharedPreferences中增量写入counter的值,key为counterFuture_incrementCounter()async{SharedPreferencesprefs=awaitSharedPreferences.getInstance();intcounter=(prefs.getInt('counter')??0)+1;print("当前值:"+counter.toString());prefs.setInt('计数器',计数器);//setter(setInt)方法会同步更新内存中的键值对,然后将数据保存到磁盘,所以不需要调用update方法强制刷新缓存}_fresh(){//_incrementCounter();_incrementCounter().then((_)=>{_loadCounter().then((value){setState((){_counter=value;});print("before:$value");})});}//void_incrementCounter(){//setState((){//_counter++;//});//}@overrideWidgetbuild(BuildContextcontext){returnScaffold(appBar:AppBar(//这里我们从App.build方法创建的MyHomePage对象中获取值,并且用它来设置我们的应用栏标题。title:Text(widget.title),),body:Center(//Center是一个布局小部件。它采用单个子项并将其定位//在父项的中间。child:Column(mainAxisAlignment:MainAxisAlignment.center,children:[Text('你已经按下按钮这么多次了:',),Text('$_counter',style:Theme.of(context).textTheme.headline4,),],),),floatingActionButton:FloatingActionButton(onPressed:_fresh,tooltip:'Increment',child:Icon(Icons.add),),//这个尾随逗号使构建方法的自动格式化更好。);}}数据库存储如果需要持久化大量格式化数据,并且这些数据会以更高的频率更新,为了进一步考虑可扩展性,通常使用sqlite数据库来处理这种场景,相比文件和SharedPreferences,Databases可以为数据读写提供更快更灵活的解决方案。1.pubspec.yaml导入sqflite:1.3.2+1path_provider:^1.6.242.代码import'package:flutter/material.dart';import'package:sqflite/sqflite.dart';import'package:path/path.dart';import'package:path_provider/path_provider.dart';import'dart:io';voidmain(){runApp(MyApp());}classMyAppextendsStatelessWidget{//这个小部件是你的根应用。@overrideWidgetbuild(BuildContextcontext){returnMaterialApp(title:'FlutterDemo',theme:ThemeData(primarySwatch:Colors.blue,),home:MyHomePage(title:'FlutterDemoHomePage'),);}}classMyHomePageextendsStatefulWidget{MyHomePage({Keykey,this.title}):super(key:key);最终字符串标题;@override_MyHomePageStatecreateState()=>_MyHomePageState();}classStudent{Stringid;字符串名称;积分;//构造方法Student({this.id,this.name,this.score,});//使用将JSON字符串转换成类对象的工厂类方法factoryStudent.fromJson(MapparsedJson){returnStudent(id:parsedJson['id'],name:parsedJson['name'],score:parsedJson['score'],);}MaptoJson(){return{'id':id,'name':名字,'score':分数,};}}class_MyHomePageStateextendsState{varstudent1=Student(id:'123',name:'张三',score:110);query_database(id){Futureuser=query_by_id(id);user.then((t){print("单用户查询成功");print('sroceis:'+t.score.toString());student1.score=t.score;});}//插入数据FutureinsertStudent(Studentstd)async{finalDatabasedb=awaitdatabase;awaitdb.insert('students',std.toJson(),//插入冲突策略,新的替换旧的冲突算法:ConflictAlgorithm.replace,);}Futurequery_by_id(Stringid)async{finalDatabasedb=awaitdatabase;列表