Flutter移动电商实战 --(50)持久化_shared_preferences
当app关掉了。再进去的时候 ,购物车的内容还是存在。
sqflite提供这个来操作SQLite数据库
flutter提供三种持久化的工具
今天要学的就是
shared_preferences
还有一种持久化就是:file,用流的形式去读取还是有些慢
安装shared_preferences
插件地址:
https://github.com/flutter/plugins/tree/master/packages/shared_preferences
提前开好了VPN 日本节点下载还是比较快的

shared_preferences: ^0.5.1
拿购物车坐一些持久化的增删改查
cart_page.dart
引入shared_preferences 然后stfull创建一个动态的widget

新增的方法setStringList,当然还有其他的方法setBool等等

增加方法就完成了

show 方法从持久化里面获取值,如果有值就用setState给 变量testList赋值,这样界面就发生变化了。

删除方法,一种是全部清空,一种是根据key值清空

写build方法
在build最上面先调用show的方法,
下面布局用了ListView然后分别放了container和两个按钮

运行效果展示:
点击增加按钮,增加了几条记录

在终端内输入q就是退出了

flutter run 重新运行。原来的数据还在

最终代码
cart_page.dart
import 'package:flutter/material.dart';
import 'package:shared_preferences/shared_preferences.dart'; class CartPage extends StatefulWidget {
@override
_CartPageState createState() => _CartPageState();
} class _CartPageState extends State<CartPage> {
List<String> testList=[];
@override
Widget build(BuildContext context) {
_show();
return Container(
child: Column(
children: <Widget>[
Container(
height: 500.0,
child: ListView.builder(
itemCount: testList.length,
itemBuilder: (context,index){
return ListTile(
title: Text(testList[index]),
);
},
),
),
RaisedButton(
onPressed: (){_add();},
child: Text('增加'),
),
RaisedButton(
onPressed: (){_clear();},
child: Text('清空'),
)
],
),
);
}
//增加方法
void _add() async{
SharedPreferences prefs=await SharedPreferences.getInstance();
String temp = 'wjw是最棒哒!!!!!';
testList.add(temp);
prefs.setStringList('testInfo', testList);
_show();
} void _show() async{
SharedPreferences prefs=await SharedPreferences.getInstance();
if(prefs.getStringList('testInfo')!=null){
setState(() {
testList= prefs.getStringList('testInfo');
});
}
}
//删除 void _clear() async{
SharedPreferences prefs=await SharedPreferences.getInstance();
//prefs.clear();//全部删除
prefs.remove('testInfo');//根据key值清空
setState(() {
testList=[];
});
} }
.
Flutter移动电商实战 --(50)持久化_shared_preferences的更多相关文章
- Flutter移动电商实战 --(53)购物车_商品列表UI框架布局
cart_page.dart 清空原来写的持久化的代码; 添加对应的引用,stless生成一个静态的类.建议始终静态的类,防止重复渲染 纠正个错误,上图的CartPage单词拼错了,这里改过来防止后面 ...
- Flutter移动电商实战 --(52)购物车_数据模型建立和Provide修改
根据json数据生成模型类 {"goodsId":"2171c20d77c340729d5d7ebc2039c08d","goodsName" ...
- Flutter移动电商实战 --(51)购物车_Provide中添加商品
新加provide的cart.dart页面 引入三个文件.开始写provide类.provide需要用with 进行混入 从prefs里面获取到数据,判断有没有数据,如果有数据就返转正List< ...
- Flutter移动电商实战 --(10)使用FlutterSwiper制作轮播效果
1.引入flutter_swiper插件 flutter最强大的siwiper, 多种布局方式,无限轮播,Android和IOS双端适配. 好牛X得介绍,一般敢用“最”的一般都是神级大神,看到这个介绍 ...
- Flutter移动电商实战 --(9)移动商城数据请求实战
1.URL接口管理文件建立 第一步需要在建立一个URL的管理文件,因为课程的接口会一直进行变化,所以单独拿出来会非常方便变化接口.当然工作中的URL管理也是需要这样配置的,以为我们会不断的切换好几个服 ...
- Flutter移动电商实战 --(6)dio基础_Get_Post请求和动态组件协作
上篇文章中,我们只看到了 dio 的使用方式,但并未跟应用关联起来,所以这一篇将 dio 网络请求与应用界面结合起来,当然这也是为以后的实战作基础准备,基础打牢,我们才能飞速前进. 1.案例说明 我们 ...
- Flutter移动电商实战 --(1)项目学习记录
1.项目相关截图 2.项目知识点梳理图 Dio2.0: Dio是一个强大的 Dart Http 请求库,支持 Restful API.FormData.拦截器.请求取消等操作. Swiper: Swi ...
- Flutter移动电商实战 --(49)详细页_Stack制作底部工具栏
一直悬浮在最下面的 Stack层叠组件.里面用Row 可以横向布局 开始 stack如果想定位就要用position去定位. 修改return返回值的这个地方 大R刷新查看效果,可以看到固定的在左下角 ...
- Flutter移动电商实战 --(48)详细页_详情和评论的切换
增加切换的效果,我们主要是修改这个地方 这样我们的评论的内容就显示出来了 最终代码 details_web.dart import 'package:flutter/material.dart'; i ...
随机推荐
- RestFramework之权限组件
一.权限组件的使用 1.首先需要导入包 from rest_framework.permissions import BasePermission 2.编写权限类 class VipPermissio ...
- 3.Git 命令行操作
1.Git 命令行操作(本地库操作): 1.1. 创建本地库(本地库初始化): 第一步:首先在D盘建了个名为git空文件夹,命令行中cd到这个文件夹: 第二步:通过git init命令把这个目录变成G ...
- 开源框架---tensorflow c++ API中./configure步骤细节
u@u160406:~/tf1.13/tensorflow$ git checkout r1.13 分支 r1.13 设置为跟踪来自 origin 的远程分支 r1.13.切换到一个新分支 'r1.1 ...
- EXCEL导入数据到SQL SERVER 2008
项目中需要导入excel到SQL SERVER数据库 总是报截断, 本质问题是,SQL SERVER导入程序是根据EXCEL的第一行记录 (非标题行)来决定数据长度的 碰到这个问题,可以伪造第一行,然 ...
- 【转】SENDING KEY VALUE MESSAGES WITH THE KAFKA CONSOLE PRODUCER
SENDING KEY VALUE MESSAGES WITH THE KAFKA CONSOLE PRODUCER When working with Kafka you might find yo ...
- 前端笔记-js
js在html中的位置 HTML 中的脚本必须位于 <script> 与 </script> 标签之间. 脚本可被放置在 HTML 页面的 <body> 和 < ...
- php版网站站打包程序【配合webshell】(原创)
因为大马只能下载一些单文件,无法下载文件夹里的文件,所以花费一些时间写了一个PHP脚本,打包全站数据,在此分享!切勿做违法事情! 使用方法: 1.将该程序上传到网站的目录下,如/zip.php : 2 ...
- prometheus-alertmanager告警推送到钉钉
1. Prometheus告警简介 告警能力在Prometheus的架构中被划分成两个独立的部分.如下所示,通过在Prometheus中定义AlertRule(告警规则),Prometheus会周期性 ...
- [bzoj 3701] Olympic Games (莫比乌斯反演)
题目描述 给出n,m,l,r,modn,m,l,r,modn,m,l,r,mod 表示一个(n+1)∗(m+1)(n+1)*(m+1)(n+1)∗(m+1)的格点图,求能够互相看见的点对个数对modm ...
- 使用jQuery快速高效制作网页交互特效--初始jQuery
一. jQuery基本概念介绍 1.1 什么是jQuery一个javascript库,把常用方法写到一个js文件中,需要的时候直接调用即可学习jQuery就是学习一些方法 ...