flutter持久化_Flutter 持久化_shared_preferences(示例代码)

购物车中的一项功能是持久化,就是我们关掉APP,下次进入后,还是可以显示出我们放入购物车的商品。

Flutter提供了三种持久化工具,数据库sqflite、shared_preferences、文件file。

但是这些商品不和后台进行数据交互,前台如果使用sqflite又显得太重,还要懂SQL知识。所以在购物车页面我们采用shared_preferences来进行持久化,它是简单的键-值的操作。

认识shared_preferences

shared_preferences是一个Flutter官方出的插件,它的主要作用就是可以key-value的形式来进行APP可客户端的持久化。

项目包依赖设置

既然是插件,使用前需要在pubspec.yaml里进行依赖设置,直接在dependencies里加入下面的代码:

shared_preferences: ^0.5.3+4

注意使用最新版本。

shared_preferences 增加方法

先来看看shared_preferences如何进行增加所存储的key-value值。删除购物车页面以前的代码,在这个页面进行新知识的学习。

先引入几个必要的包,使用shared_preferences前是要用import进行引入的。

import ‘package:flutter/material.dart‘;

import‘package:shared_preferences/shared_preferences.dart‘;

然后用快速生成的方法stful,生成一个StatefulWidget类,起类名叫CartPage。在类里声明一个变量testList。

List testList =[];

此时代码如下:

import ‘package:flutter/material.dart‘;

import‘package:shared_preferences/shared_preferences.dart‘;classCartPage extends StatefulWidget {

@override

_CartPageState createState()=>_CartPageState();

}class _CartPageState extends State{

List testList =[];

@override

Widget build(BuildContext context) {returnContainer(

);

}

}

编写增加方法

我们在类里声明一个内部方法add,代码如下:

void _add() async{

SharedPreferences prefs= awaitSharedPreferences.getInstance(); //初始化

String temp="my是最棒的!!!";

testList.add(temp);

prefs.setStringList(‘testInfo‘, testList);

_show();

}

编写显示方法

void _show() async{

SharedPreferences prefs= awaitSharedPreferences.getInstance(); //初始化

setState(() {if(prefs.getStringList(‘testInfo‘)!=null){

testList=prefs.getStringList(‘testInfo‘);

}

});

}

编写删除方法

void _clear() async{

SharedPreferences prefs= await SharedPreferences.getInstance(); //初始化//prefs.clear();//全部清空

prefs.remove(‘testInfo‘); //删除key键

setState((){

testList=[];

});

}

增加修改用set方法,查询用get, 删除是clear和remove方法。

build方法编写

有了这些方法,我们只要在build里加入一个ListView再加上两个按钮就可以了。

@override

Widget build(BuildContext context) {

_show();//每次进入前进行显示

returnContainer(

child:Column(

children:[

Container(

height:500.0,

child: ListView.builder(

itemCount:testList.length ,

itemBuilder: (context,index){returnListTile(

title: Text(testList[index]),

);

},

) ,

),

RaisedButton(

onPressed: (){_add();},

child: Text(‘增加‘),

),

RaisedButton(

onPressed: (){_clear();},

child: Text(‘清空‘),

),

],

)

);

}

这样就完成了所有代码的编写,通过简单的例子学会shared_preferences的增删改查操作。

完成代码如下:

import ‘package:flutter/material.dart‘;

import‘package:shared_preferences/shared_preferences.dart‘;classCartPage extends StatefulWidget {

@override

_CartPageState createState()=>_CartPageState();

}class _CartPageState extends State{

List testList =[];

@override

Widget build(BuildContext context) {

_show();//每次进入前进行显示

returnContainer(

child: Column(

children:[

Container(

height:500.0,

child: ListView.builder(

itemCount: testList.length,

itemBuilder: (context,index){returnListTile(

title: Text(testList[index]),

);

},

),

),

RaisedButton(

onPressed: (){_add();},

child: Text(‘增加‘),

),

RaisedButton(

onPressed: (){_clear();},

child: Text(‘清空‘),

)

],

),

);

}//增加方法

void _add() async{

SharedPreferences prefs=await SharedPreferences.getInstance(); //初始化

String temp = ‘my是最棒哒!!!!!‘;

testList.add(temp);

prefs.setStringList(‘testInfo‘, testList);

_show();

}//查询显示

void _show() async{

SharedPreferences prefs=await SharedPreferences.getInstance(); //初始化

if(prefs.getStringList(‘testInfo‘)!=null){ //查询get

setState(() {

testList= prefs.getStringList(‘testInfo‘);

});

}

}//删除

void _clear() async{

SharedPreferences prefs=await SharedPreferences.getInstance(); //初始化//prefs.clear();//全部删除

prefs.remove(‘testInfo‘); //删除指定key键

setState(() {

testList=[];

});

}

}

运行后的结果:

这时退出运行,页可以在终端内输入q就是退出了。

然后重新运行flutter run,发现刚才添加的三条数据还在,持久化成功。

你可能感兴趣的:(flutter持久化)