flutter中数据持久化插件shared_preferences案例介绍

场景介绍:

在电商类App开发中,通常都会有一个功能模块——购物车,购物车中的一项功能是持久化,就是我们关掉APP,下次进入后,还是可以显示出我们放入购物车的商品(类似于缓存localStorage、sessionStorage)。但是这些商品不和后台进行数据交互,前台如果使用sqflite又显得太重,还要懂SQL知识。所以在购物车页面我们采用shared_preferences来进行持久化,它是简单的键-值的操作,可以实现常见增删改查功能。

功能实现:

  1. 安装插件

GitHub地址:https://github.com/flutter/plugins/tree/master/packages/shared_preferences

插件库地址:https://pub.dev/packages/shared_preferences

 shared_preferences: ^0.5.7+3
  1. 在页面中引入包:
import 'package:shared_preferences/shared_preferences.dart';
  1. 开发UI界面以及功能函数:
import 'package:flutter/material.dart';
import 'package:shared_preferences/shared_preferences.dart';


class CartPage extends StatefulWidget {
  CartPage({Key key}) : super(key: key);

  @override
  _CartPageState createState() => _CartPageState();
}

class _CartPageState extends State<CartPage> {

  List<String> testList = [];

  @override
  Widget build(BuildContext context) {
    // 每次页面渲染时都要先执行持久化查询函数
    this._show();

    return Container(
      child: Column(
        children: [
          Container(
            height: 500.0,
            color: Colors.grey[24],
            child: ListView.builder(
              itemCount: this.testList.length,
              itemBuilder: (context, index){
                return ListTile(
                  title: Text(this.testList[index]),
                );
              }
            ),
          ),

          // 添加按钮
          RaisedButton(
            onPressed: (){
              this._add();
            },
            child: Text(
              '添加'
            ),
          ),

          // 删除按钮
          RaisedButton(
            onPressed: (){
              this._dele();
            },
            child: Text(
              '删除'
            ),
          ),
        ],
      ),
    );
  }

  // 增加
  void _add() async {
    
    SharedPreferences prefs = await SharedPreferences.getInstance();

    String temp = '我是最帅的';
    this.testList.add(temp);
    prefs.setStringList('testInfo', testList);
    _show();
  }

  // 查询
  void _show() async {
    SharedPreferences prefs = await SharedPreferences.getInstance();

    if(prefs.getStringList('testInfo') != null){
      setState(() {
        this.testList = prefs.getStringList('testInfo');
      });
    }
  }

  // 删除
  void _dele() async {
    SharedPreferences prefs = await SharedPreferences.getInstance();

    // 1. 删除指定key的持久化数据
    prefs.remove('testInfo');

    // 2. 删除所有持久化数据(本例中不采取此种方案)
    // prefs.clear();

    setState(() {
      this.testList = [];
    });
  }
}

至此,我们的持久化就实现了,本人亲测有效,如有问题,请在评论区留言~~~

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值