Flutter实战视频-移动电商-50.持久化_shared_preferences
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.
3分20秒
拿购物车坐一些持久化的增删改查
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实战视频-移动电商-02.Flutter实战建立项目和编写入口文件
02.Flutter实战建立项目和编写入口文件 创建项目: flutter create flutter_shop 创建完成之后呢,它会提示我们, 进入flutter_shop的目录,然后执行flut ...
- Flutter实战视频-移动电商-10.首页_FlutterSwiper轮播效果制作
10.首页_FlutterSwiper轮播效果制作 博客地址: https://jspang.com/post/FlutterShop.html#toc-5c2 flutter_swiper http ...
- Flutter实战视频-移动电商-16.补充_保持页面状态
16.补充_保持页面状态 修正一个地方: 设置了item的高度为380 横向列表为380.最终build的高度也增加了50为430. 增加了上面的高度以后,下面那个横线划掉的价格可以显示出来了. 但是 ...
- Flutter实战视频-移动电商-47.详细页_Flutter_html插件的使用
47.详细页_Flutter_html插件的使用 详情里面是hemlt和图片组成的,但是flutter是不支持html的所以需要其他插件 flutter webview plugin:这个不太好用 f ...
- Flutter实战视频-移动电商-51.购物车_Provide中添加商品
51.购物车_Provide中添加商品 新加provide的cart.dart页面 引入三个文件.开始写provide类.provide需要用with 进行混入 从prefs里面获取到数据,判断有没有 ...
- Flutter实战视频-移动电商-52.购物车_数据模型建立和Provide修改
52.购物车_数据模型建立和Provide修改 根据json数据生成模型类 {,"price":830.0,"images":"http://imag ...
- Flutter实战视频-移动电商-53.购物车_商品列表UI框架布局
53.购物车_商品列表UI框架布局 cart_page.dart 清空原来写的持久化的代码; 添加对应的引用,stless生成一个静态的类.建议始终静态的类,防止重复渲染 纠正个错误,上图的CartP ...
- Flutter实战视频-移动电商-57.购物车_在Model中增加选中字段
57.购物车_在Model中增加选中字段 先修改model类 model/cartInfo.dart类增加是否选中的属性 修改provide 修改UI部分pages/cart_page/cart_it ...
- Flutter实战视频-移动电商-58.购物车_删除商品功能制作
58.购物车_删除商品功能制作 主要做购物车后面的删除按钮 删除的方法写在provide里面 provide/cart.dart文件 传入goodsId,循环对比,找到后进行移除 //删除单个购物车商 ...
随机推荐
- 使用kubernetes 官网工具kubeadm部署kubernetes(使用阿里云镜像)
系列目录 kubernetes简介 Kubernetes节点架构图: kubernetes组件架构图: 准备基础环境 我们将使用kubeadm部署3个节点的 Kubernetes Cluster,整体 ...
- 图像处理之opencv---常用函数
http://blog.sina.com.cn/s/blog_9c3fc0730100yzwt.html 很全 http://www.xuebuyuan.com/593449.html cvrepea ...
- 网络爬虫(蜘蛛)Scrapy,Python安装!
Scrapy,Python安装.使用! 1.下载安装Python2.7.6.由于Scrapy还不支持3.x版本号. Latest Python 2 Release - Python 2.7.6,安装时 ...
- BZOJ 4316: 小C的独立集 仙人掌 + 树形DP
4316: 小C的独立集 Time Limit: 10 Sec Memory Limit: 128 MB Description 图论小王子小C经常虐菜,特别是在图论方面,经常把小D虐得很惨很惨. ...
- tomcat部署web应用的4种方法以及部署多个应用
原文: tomcat部署web应用的4种方法 在Tomcat中有四种部署Web应用的方式,简要的概括分别是: (1)利用Tomcat自动部署 (2)利用控制台进行部署 (3)增加自定义的Web部署文件 ...
- 使用酷Q SDK开发QQ机器人
酷Q SDK下载地址:https://github.com/CoolQ/cqsdk-vc 打开工程,编辑appmain.cpp 将“私聊消息”处的代码 更改为 CQEVENT(int32_t, __e ...
- SAP bseg 使用注意点:1.不要使用;2.有主键再用,
粗表-簇表 cluster-table BSEGRFBLG 池表 pool-table 我記的沒錯的話,在21天學會ABAP中有一節是專門在講Cluster table,另外在 www.sapfans ...
- Windows程序设计(0)——编程之前
Windows程序设计之前 1 做什么 2 解决什么问题 3 有哪些资源 在开始真正的编程之前,需要了解要做的事情是什么,要解决的解决的问题是什么,有哪些资源可以使用. 1 Windows程序设计之前 ...
- zoom:1
zoom这个特性是IE特有的属性. zoom:1;一般是拿来解决IE6的子元素浮动时候父元素不随着自动扩大的问题,功能相当于overflow:auto,同样也可以用height:1%来代替zoom ...
- Codeforces Round #364 (Div. 1)(vp) 没什么题解就留坑待填
我就做了前两题,第一题第一次vp就把我搞自闭跑路了,第二题第二次又把我搞自闭了 A. As Fast As Possible 细节题 #include<cstdio> #include&l ...