当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的更多相关文章

  1. Flutter移动电商实战 --(53)购物车_商品列表UI框架布局

    cart_page.dart 清空原来写的持久化的代码; 添加对应的引用,stless生成一个静态的类.建议始终静态的类,防止重复渲染 纠正个错误,上图的CartPage单词拼错了,这里改过来防止后面 ...

  2. Flutter移动电商实战 --(52)购物车_数据模型建立和Provide修改

    根据json数据生成模型类 {"goodsId":"2171c20d77c340729d5d7ebc2039c08d","goodsName" ...

  3. Flutter移动电商实战 --(51)购物车_Provide中添加商品

    新加provide的cart.dart页面 引入三个文件.开始写provide类.provide需要用with 进行混入 从prefs里面获取到数据,判断有没有数据,如果有数据就返转正List< ...

  4. Flutter移动电商实战 --(10)使用FlutterSwiper制作轮播效果

    1.引入flutter_swiper插件 flutter最强大的siwiper, 多种布局方式,无限轮播,Android和IOS双端适配. 好牛X得介绍,一般敢用“最”的一般都是神级大神,看到这个介绍 ...

  5. Flutter移动电商实战 --(9)移动商城数据请求实战

    1.URL接口管理文件建立 第一步需要在建立一个URL的管理文件,因为课程的接口会一直进行变化,所以单独拿出来会非常方便变化接口.当然工作中的URL管理也是需要这样配置的,以为我们会不断的切换好几个服 ...

  6. Flutter移动电商实战 --(6)dio基础_Get_Post请求和动态组件协作

    上篇文章中,我们只看到了 dio 的使用方式,但并未跟应用关联起来,所以这一篇将 dio 网络请求与应用界面结合起来,当然这也是为以后的实战作基础准备,基础打牢,我们才能飞速前进. 1.案例说明 我们 ...

  7. Flutter移动电商实战 --(1)项目学习记录

    1.项目相关截图 2.项目知识点梳理图 Dio2.0: Dio是一个强大的 Dart Http 请求库,支持 Restful API.FormData.拦截器.请求取消等操作. Swiper: Swi ...

  8. Flutter移动电商实战 --(49)详细页_Stack制作底部工具栏

    一直悬浮在最下面的 Stack层叠组件.里面用Row 可以横向布局 开始 stack如果想定位就要用position去定位. 修改return返回值的这个地方 大R刷新查看效果,可以看到固定的在左下角 ...

  9. Flutter移动电商实战 --(48)详细页_详情和评论的切换

    增加切换的效果,我们主要是修改这个地方 这样我们的评论的内容就显示出来了 最终代码 details_web.dart import 'package:flutter/material.dart'; i ...

随机推荐

  1. DB2备份恢复schema

    场景:日常中开发同步生成环境或者环境切换都需要进行表结构.存储.数据等等的迁移,本文为表.视图.包.函数.存储等统一备份及恢复的操作. 备份: 登录数据库所在服务器,或者可远程连接需备份数据库的服务器 ...

  2. python之os与json&pickle模块

     一.os模块 简单概述一下os模块就是与操作系统交互的一个接口 import os #os.getcwd() print(os.getcwd()) # 获取到当前工作目录 # 运行结果:E:\pyt ...

  3. 001——搭建OpenCV实验环境

    开发环境 VS 2017 15.7.6 OpenCV 3.4.1 搭建环境 设置环境变量 创建Win32 空项目 配置属性管理器 测试代码 #include<opencv2/opencv.hpp ...

  4. VSCode安装程序——java开发

    文章:微软为 Java 开发者推出 VSCode 安装程序 文章介绍微软为VSCode提供了开发程序,方便java开发者更好的使用VSCode

  5. apache配置https加密传输

    环境:两台linux虚拟机和一台windows本机,一台充当要使用https传输的web服务器apache2.4.4,另一台CA服务器,window测试https配置. 1.CA服务器生成私有CA 1 ...

  6. ABCD组·第五次团队作业项目需求分析改进与系统设计

    项目 内容 这个作业属于哪个课程 http://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/nwnu-daizh 团队 ...

  7. Selenium(十四)处理登录框的验证码

    对于 web 应用来说,大部分的系统在用户登录时都要求用户输入验证码,验证码的类型的很多,有字母数字的,有汉字的,甚至还要用户输入一条算术题的答案的,对于系统来说使用验证码可以有效果的防止采用机器猜测 ...

  8. 配置Cisco网络设备

    了解就行,不用记 电脑管理路由器软件   路由器显示命令: router#show run :显示配置信息 router#show interface :显示接口信息 router#show ip r ...

  9. 2018 南京网络预赛Sum ——莫比乌斯反演

    题意 设 $f(n)$ 为 $n=ab$ 的方案数,其中 $a,b$ 为无平方因子数.求 $\displaystyle  \sum_{i=1}^nf(i)$,$n \leq 2e7$. 分析 显然,可 ...

  10. Python 如何理解可更改元组中的可变序列

    在 Python 中,元组是不可变序列,那为什么当元组中的元素是可变序列时(如 list.dict)可进行增删的操作? 在定义一个元组时,Python内部会为元组中的每一个元素分配一个内存地址,当我们 ...