📅  最后修改于: 2023-12-03 15:38:32.549000             🧑  作者: Mango
如果你开发Flutter应用程序,你可能已经想要利用SharedPreferences来保存一些简单的键值对。SharedPreferences是一个简单的键值对存储,用于在应用程序中存储持久数据。SharedPreferences被设计为只用于存储小量的数据,比如用户设置,而不是用于存储大量的数据。
在下面的步骤中,我们将介绍如何在Flutter中设置SharedPreferences。
在pubspec.yaml文件中添加下面的依赖
dependencies:
shared_preferences: ^2.0.6
在需要使用SharedPreferences的文件顶部导入该包。
import 'package:shared_preferences/shared_preferences.dart';
在需要使用SharedPreferences的地方,我们需要创建一个SharedPreferences实例。它将返回一个Future,并且在此实例可用之前需要等待该Future。
SharedPreferences prefs = await SharedPreferences.getInstance();
SharedPreferences可以存储字符串、整数、布尔值等。
prefs.setString('username', 'johndoe');
prefs.setInt('age', 25);
prefs.setBool('is_logged_in', true);
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是为了存储用户设置等简单的键值对,而避免过度使用它们存储大量数据。