Flutter插件SharedPreferences源码分析

本文详细分析了Flutter插件SharedPreferences的源码,包括基本用法和Android平台的实现。在Flutter中,SharedPreferences用于存储数据,但因其异步存储特性,不适用于关键数据。通过MethodChannel与Native进行通信,初始化时从Native获取数据并缓存,get和set操作通过缓存和通信完成。
摘要由CSDN通过智能技术生成

Android上最基本的一个存储方式就是SharedPreferences,flutter上也有一个基于sp的插件。
该插件封装了NSUserDefaults(IOS)和SharedPreferences(Android),由于数据是异步存储到磁盘,不能保证在你return之后就生效, 所以尽量不要使用这个插件存储一些关键性数据。

既然是要分析源码,首先先把基本用法奉上。

基本用法

在项目的pubspec.yaml文件中,添加以下内容:

dependencies:
  shared_preferences: ^0.5.3+4

然后执行 packages get。接下来新建一个dart文件,贴入如下代码:

import 'package:flutter/material.dart';
import 'package:shared_preferences/shared_preferences.dart';

void main() {
  runApp(MaterialApp(
    home: Scaffold(
      body: Center(
      child: RaisedButton(
        onPressed: _incrementCounter,
        child: Text('Increment Counter'),
        ),
      ),
    ),
  ));
}

_incrementCounter() async {
  SharedPreferences prefs = await SharedPreferences.getInstance();
  int counter = (prefs.getInt('counter') ?? 0) + 1;
  print('Pressed $counter times.');
  await prefs.setInt('counter', counter);
}

运行,点击屏幕中心按钮,会看到如下打印:

I/flutter (30837): Pressed 1 times.
I/flutter (30837): Pressed 2 times.
...

源码分析

好了,以上就是sp的用法了,是不是很简单? ^_^
接下来一起看下源码,首先是获取sp的实例:
SharedPreferences prefs = await SharedPreferences.getInstance();//注意,await必须在async修饰的函数中使用,表示异步
对应的源码如下:

const MethodChannel _kChannel =
    MethodChan
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值