一、前言

在开发 Flutter 应用时,我们经常需要存储一些用户的偏好设置或者其他的一些小型数据。

这时候,我们就可以使用 Flutter 提供的 shared_preferences 包来帮助我们实现这个功能。

本文将为你简要介绍如何在 Flutter 中使用 shared_preferences。

【Flutter】Flutter 数据存储 shared_preferences 简介-LMLPHP

🎉想要精通 Flutter,掌握更多技巧和最佳实践?好消息来了!👉 Flutter专栏->Flutter Developer 101 入门小册 正在等你!📚

🔍这里有你需要的所有 Flutter 学习资源,包括代码示例和深度解析。🎯

⏰专栏内容持续更新,价格也会随之上涨。现在加入,享受最优惠的价格!💰

🚀现在,让我们开始今天的 Flutter 之旅吧!🌍

二、包的版本号

本文所使用的 shared_preferences 的版本为 2.1.2。

三、shared_preferences 简介

shared_preferences 是 Flutter 的一个插件,用于读取和写入简单的键值对。它在 iOS 上包装了 NSUserDefaults,在 Android 上包装了 SharedPreferences。支持的数据类型有 int、double、bool、String 和 List。

四、如何在 Flutter 中使用 shared_preferences

1. 添加依赖

首先,我们需要在 pubspec.yaml 文件中添加 shared_preferences 的依赖,如下所示:

dependencies:
  flutter:
    sdk: flutter

  shared_preferences: ^2.1.2

然后,运行 flutter packages get 命令来获取包。

2. 读取和写入数据

使用 shared_preferences 读取和写入数据非常简单。首先,我们需要获取 shared_preferences 的实例,然后就可以使用 set 和 get 方法来写入和读取数据了。例如:

// 获取 shared_preferences 的实例
final SharedPreferences prefs = await SharedPreferences.getInstance();

// 写入数据
await prefs.setInt('counter', 10);
await prefs.setBool('repeat', true);
await prefs.setDouble('decimal', 1.5);
await prefs.setString('action', 'Start');
await prefs.setStringList('items', ['Earth', 'Moon', 'Sun']);

// 读取数据
final int? counter = prefs.getInt('counter');
final bool? repeat = prefs.getBool('repeat');
final double? decimal = prefs.getDouble('decimal');
final String? action = prefs.getString('action');
final List<String>? items = prefs.getStringList('items');

五、一个简单的 shared_preferences 使用示例

下面是一个简单的 shared_preferences 使用示例,我们创建一个简单的计数器应用,每次点击按钮,计数器的值就会增加,而且我们会将计数器的值保存在 shared_preferences 中,这样即使我们重启应用,计数器的值也不会丢失。

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

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'SharedPreferences Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(title: 'SharedPreferences Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key? key, required this.title}) : super(key: key);

  final String title;

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

class _MyHomePageState extends State<MyHomePage> {
  int _counter = 0;

  @

override
  void initState() {
    super.initState();
    _loadCounter();
  }

  _loadCounter() async {
    SharedPreferences prefs = await SharedPreferences.getInstance();
    setState(() {
      _counter = (prefs.getInt('counter') ?? 0);
    });
  }

  _incrementCounter() async {
    SharedPreferences prefs = await SharedPreferences.getInstance();
    _counter = (prefs.getInt('counter') ?? 0) + 1;
    prefs.setInt('counter', _counter);
    setState(() {});
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text(
              '你已经点击了这个按钮这么多次:',
            ),
            Text(
              '$_counter',
              style: Theme.of(context).textTheme.headline4,
            ),
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: _incrementCounter,
        tooltip: 'Increment',
        child: Icon(Icons.add),
      ),
    );
  }
}

在这个示例中,我们在 _loadCounter 方法中从 shared_preferences 中读取计数器的值,并在 _incrementCounter 方法中将计数器的值写入到 shared_preferences 中。

六、总结

通过本文,你应该已经了解了如何在 Flutter 中使用 shared_preferences 来存储和读取数据了。虽然 shared_preferences 只能用来存储简单的数据,但是它的使用非常简单,对于需要存储一些用户偏好设置或者其他小型数据的应用来说,是一个非常好的选择。

🚀对 Flutter 好奇?想深入探索?👉 Flutter专栏->Flutter Developer 101 入门小册 是你的最佳伙伴!📚

👀你将在这里找到全面的 Flutter 学习资源,包括代码示例和深度解析。🔍

💡想知道如何用 Flutter 构建应用?答案就在我们的专栏!🎯

⏰别等了,专栏内容持续更新,价格也会随之上涨。现在加入,享受最优惠的价格!💰

🌍一起在 Flutter 的世界中探索吧!想了解更多?点击这里:Flutter Developer 101 入门小册 专栏指引 🚩

06-21 09:14