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.1

 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=[];
    });
   }

}

 

posted @ 2019-04-24 23:58  高山-景行  阅读(246)  评论(0编辑  收藏  举报