前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Flutter中使用shared_preferences本地存储

Flutter中使用shared_preferences本地存储

作者头像
越陌度阡
发布2021-01-29 10:39:04
发布2021-01-29 10:39:04
1.6K00
代码可运行
举报
运行总次数:0
代码可运行

1. 安装插件

配置 shared_preferences 插件。

代码语言:javascript
代码运行次数:0
运行
复制
dependencies:
  flutter:
    sdk: flutter
  flutter_localizations:
    sdk: flutter
  date_format: ^1.0.6
  flutter_cupertino_date_picker: ^1.0.26+2 
  flutter_swiper: ^1.1.6
  fluttertoast: ^7.1.6
  http: ^0.12.2
  dio: ^3.0.10
  flutter_html: ^1.1.0
  flutter_inappwebview: ^4.0.0+4
  device_info: ^1.0.0
  amap_location: ^0.2.0
  image_picker: ^0.6.7+21
  video_player: ^1.0.1
  chewie: ^0.12.2
  connectivity: ^2.0.2

  #本地存储
  shared_preferences: ^0.5.12+4

在pubspec.yaml中配置保存后,在VS Code环境中会自动下载依赖包。

如果无法正常下载,执行 flutter pub get 。

2. 引入依赖

在需要用到的该插件的文件中引入插件包。

代码语言:javascript
代码运行次数:0
运行
复制
import 'package:shared_preferences/shared_preferences.dart';

3. 封装插件

代码语言:javascript
代码运行次数:0
运行
复制
// lib/common/Storage.dart
import 'package:shared_preferences/shared_preferences.dart';

class Storage{
    // 设置数据的方法
    static Future<void> setString(key,value) async{
        SharedPreferences sp = await SharedPreferences.getInstance();
        sp.setString(key, value);

        // 设置其它数据类型的方法
        // sp.setBool(key, value);
        // sp.setDouble(key, value);
        // sp.setInt(key, value);
        // sp.setStringList(key, value);
    }
    // 获取数据的方法
    static Future<String> getString(key) async{
        SharedPreferences sp = await SharedPreferences.getInstance();
        return sp.getString(key);
    }

    // 移除数据的方法
    static Future<void> removeString(key) async{
        SharedPreferences sp = await SharedPreferences.getInstance();
        sp.remove(key);
    }

    // 移除所有的键值对
    static Future<void> clearAll() async{
        SharedPreferences sp = await SharedPreferences.getInstance();
        sp.clear();
    }

}

4. 引入插件并使用

代码语言:javascript
代码运行次数:0
运行
复制
import 'package:flutter/material.dart';

// 引入封装的数据请求方法
import '../common/Storage.dart';

class StoragePage extends StatefulWidget {
    StoragePage({Key key}) : super(key: key);
    @override
    _StoragePageState createState() => _StoragePageState();
}

class _StoragePageState extends State<StoragePage> {

    String _username;
    // 获取数据
    getData() async{
        String username = await Storage.getString("username");
        setState(() {
            this._username=username;
        });
    }
    // 设置数据
    setData() async{
        await Storage.setString("username", "张三");
    }
    // 移除数据
    removeData() async{
        await Storage.removeString("username");
        setState(() {
            this._username=null;
        });
    }

    @override
    Widget build(BuildContext context) {
        return Scaffold(
            appBar: AppBar(
                title: Text("本地存储"),
            ),
            body: Center(
                child: Column(mainAxisAlignment: MainAxisAlignment.center,children: [
                    RaisedButton(
                        child: Text('设置数据'),
                        onPressed: setData,
                    ),

                    SizedBox(height: 10),

                    RaisedButton(
                        child: Text('获取数据'),
                        onPressed:getData,
                    ),
 
                    SizedBox(height: 10),

                    RaisedButton(
                        child: Text('清除数据'),
                        onPressed:removeData,
                    ),
                    
                    SizedBox(height: 10),

                    RaisedButton(
                        child: this._username != null?Text(_username):Text("无名姓"),
                        onPressed: (){

                        },
                    ),      
                ]),
            ),
        );
    }
}

效果图如下:

参考:

https://pub.flutter-io.cn/packages/shared_preferences

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/01/24 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 安装插件
  • 2. 引入依赖
  • 3. 封装插件
  • 4. 引入插件并使用
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档