📜  如何在Flutter中设置 SharedPreferences?(1)

📅  最后修改于: 2023-12-03 15:38:32.549000             🧑  作者: Mango

如何在Flutter中设置SharedPreferences?

如果你开发Flutter应用程序,你可能已经想要利用SharedPreferences来保存一些简单的键值对。SharedPreferences是一个简单的键值对存储,用于在应用程序中存储持久数据。SharedPreferences被设计为只用于存储小量的数据,比如用户设置,而不是用于存储大量的数据。

在下面的步骤中,我们将介绍如何在Flutter中设置SharedPreferences。

1. 安装SharedPreferences依赖

在pubspec.yaml文件中添加下面的依赖

dependencies:
  shared_preferences: ^2.0.6
2. 导入SharedPreferences包

在需要使用SharedPreferences的文件顶部导入该包。

import 'package:shared_preferences/shared_preferences.dart';
3. 创建一个SharedPreferences实例

在需要使用SharedPreferences的地方,我们需要创建一个SharedPreferences实例。它将返回一个Future,并且在此实例可用之前需要等待该Future。

SharedPreferences prefs = await SharedPreferences.getInstance();
4. 存储数据

SharedPreferences可以存储字符串、整数、布尔值等。

prefs.setString('username', 'johndoe');
prefs.setInt('age', 25);
prefs.setBool('is_logged_in', true);
5. 读取数据
String username = prefs.getString('username') ?? '';
int age = prefs.getInt('age') ?? 0;
bool isLoggedIn = prefs.getBool('is_logged_in') ?? false;

需要注意的是,在我们读取数据时,如果该数据不存在,SharedPreferences将返回null。因此,我们需要通过使用“??”运算符来提供一个默认值。

完整例子

下面是一个完整示例,演示如何设置SharedPreferences

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

class MySharedPreferencesPage extends StatefulWidget {
  @override
  _MySharedPreferencesPageState createState() => _MySharedPreferencesPageState();
}

class _MySharedPreferencesPageState extends State<MySharedPreferencesPage> {
  SharedPreferences prefs;
  String username;
  int age;
  bool isLoggedIn;

  @override
  void initState() {
    super.initState();
    _getSharedPreferences();
  }

  _getSharedPreferences() async {
    prefs = await SharedPreferences.getInstance();
    setState(() {
      username = prefs.getString('username') ?? '';
      age = prefs.getInt('age') ?? 0;
      isLoggedIn = prefs.getBool('is_logged_in') ?? false;
    });
  }

  _setSharedPreferences() async {
    await prefs.setString('username', 'johndoe');
    await prefs.setInt('age', 25);
    await prefs.setBool('is_logged_in', true);
    setState(() {
      username = 'johndoe';
      age = 25;
      isLoggedIn = true;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('SharedPreferences例子'),
      ),
      body: Column(
        children: [
          Text('用户名:$username'),
          Text('年龄:$age'),
          Text('是否已登录:$isLoggedIn'),
          SizedBox(
            height: 20,
          ),
          ElevatedButton(
            onPressed: () {
              _setSharedPreferences();
            },
            child: Text('设置 SharedPreferences'),
          )
        ],
      ),
    );
  }
}

以上就是如何在Flutter中设置SharedPreferences的全部内容。记得使用SharedPreferences是为了存储用户设置等简单的键值对,而避免过度使用它们存储大量数据。