• 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=[];
        });
       }
    
    }
  • 相关阅读:
    SQLSTATE[HY000] [2002] No such file or directory(转)
    pg_stat_activity各字段的含义
    DedeCMS 后台空白问题
    关于XP和win7 的IIS发布问题
    500错误
    swfupload上传多张照片出现404 错误?(已解决)
    url字符串编码乱码问题
    遮罩层《一》
    Java集合按照索引分页,以及JS数组代码按照索引分页的源码
    填充整个页面
  • 原文地址:https://www.cnblogs.com/wangjunwei/p/10765842.html
Copyright © 2020-2023  润新知