Flutter本地存储插件flutter_local_prefs的使用
Flutter本地存储插件flutter_local_prefs
的使用
flutter_local_prefs 
此Flutter插件允许你在Android和iOS平台上安全地存储、检索和管理本地偏好设置,包括字符串、整数、布尔值等。所有偏好设置都经过加密以确保数据保护和隐私。
准备工作
Android
确保在android/app/build.gradle
文件中的minSdkVersion
设置为19或更高:
minSdkVersion 19
iOS
最低支持的iOS版本为12.0。请确保在你的iOS项目配置中设置此版本。
开始使用
安装
在pubspec.yaml
文件中添加依赖项:
dependencies:
flutter_local_prefs: ^0.0.1
导入
在Dart文件中导入flutter_local_prefs
包:
import 'package:flutter_local_prefs/flutter_local_prefs.dart';
使用方法
以下是一些使用示例:
初始化FlutterLocalPrefs
实例
// 初始化实例
FlutterLocalPrefs flutterLocalPrefs = FlutterLocalPrefs();
保存和检索字符串
// 保存数据
await flutterLocalPrefs.saveData(object: "objects", key: "test");
// 检索字符串数据
String key = await flutterLocalPrefs.getString(key: "test");
保存和检索整数
// 保存整数数据
await flutterLocalPrefs.saveData(object: 42, key: "testInt");
// 检索整数数据
int intData = await flutterLocalPrefs.getInt(key: "testInt");
保存和检索布尔值
// 保存布尔值数据
await flutterLocalPrefs.saveData(object: true, key: "testBool");
// 检索布尔值数据
bool boolData = await flutterLocalPrefs.getBool(key: "testBool");
保存和检索双精度浮点数
// 保存双精度浮点数数据
await flutterLocalPrefs.saveData(object: 3.14, key: "testDouble");
// 检索双精度浮点数数据
double doubleData = await flutterLocalPrefs.getDouble(key: "testDouble");
删除数据
// 删除特定键值对
await flutterLocalPrefs.remove(key: "testString");
// 删除所有存储的偏好设置
await flutterLocalPrefs.removeAll();
检查是否存在某个键
// 检查指定键的数据是否存在
bool exists = await flutterLocalPrefs.contain(key: "testString");
详细功能
- saveData: 在特定键下保存对象(字符串、整数、布尔值等)。
- getInt / getString / getBool / getDouble / getLong: 按类型检索数据。
- remove: 删除指定键的数据。
- removeAll: 删除所有存储的数据。
- contain: 检查指定键的数据是否存在。
完整示例代码
以下是完整的示例代码:
import 'dart:developer';
import 'package:flutter/material.dart';
import 'dart:async';
import 'package:flutter/services.dart';
import 'package:flutter_local_prefs/flutter_local_prefs.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatefulWidget {
const MyApp({super.key});
[@override](/user/override)
State<MyApp> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
String _platformVersion = 'Unknown';
final _flutterLocalPrefsPlugin = FlutterLocalPrefs();
[@override](/user/override)
void initState() {
super.initState();
initPlatformState();
WidgetsBinding.instance.addPostFrameCallback((_) async {
FlutterLocalPrefs flutterLocalPrefs = FlutterLocalPrefs();
await flutterLocalPrefs.saveData(object: "objects", key: "test");
String key = await flutterLocalPrefs.getString(key: "test");
log("Result: $key");
});
}
// 平台消息是异步的,因此我们在异步方法中初始化
Future<void> initPlatformState() async {
String platformVersion;
// 平台消息可能失败,所以我们使用try/catch处理PlatformException。
// 我们还处理消息可能返回null的情况。
// try {
// platformVersion = await _flutterLocalPrefsPlugin.getPlatformVersion() ??
// 'Unknown platform version';
// } on PlatformException {
// platformVersion = 'Failed to get platform version.';
// }
// 如果小部件在异步平台消息还在飞行时从树中移除,我们希望丢弃回复而不是调用setState来更新我们的非存在的外观。
// if (!mounted) return;
// setState(() {
// _platformVersion = platformVersion;
// });
}
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('插件示例应用'),
),
body: Center(
child: Text('运行在: $_platformVersion\n'),
),
),
);
}
}
更多关于Flutter本地存储插件flutter_local_prefs的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter本地存储插件flutter_local_prefs的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
flutter_local_prefs
是一个用于在 Flutter 应用中存储本地数据的插件。它基于 SharedPreferences
,提供了一种简单的方式来存储和读取键值对数据。以下是如何使用 flutter_local_prefs
插件的详细步骤:
1. 添加依赖
首先,在 pubspec.yaml
文件中添加 flutter_local_prefs
插件的依赖:
dependencies:
flutter:
sdk: flutter
flutter_local_prefs: ^1.0.0 # 请使用最新版本
然后运行 flutter pub get
来安装依赖。
2. 导入插件
在需要使用 flutter_local_prefs
的 Dart 文件中导入插件:
import 'package:flutter_local_prefs/flutter_local_prefs.dart';
3. 初始化插件
在使用插件之前,你需要先初始化它。通常,你可以在 main
函数中初始化:
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await LocalPrefs.init();
runApp(MyApp());
}
4. 存储数据
你可以使用 LocalPrefs
类中的方法来存储数据。支持的数据类型包括 String
, int
, double
, bool
, 和 List<String>
。
await LocalPrefs.setString('key', 'value');
await LocalPrefs.setInt('key', 42);
await LocalPrefs.setDouble('key', 3.14);
await LocalPrefs.setBool('key', true);
await LocalPrefs.setStringList('key', ['value1', 'value2']);
5. 读取数据
你可以使用 LocalPrefs
类中的方法来读取数据:
String stringValue = LocalPrefs.getString('key', defaultValue: 'default');
int intValue = LocalPrefs.getInt('key', defaultValue: 0);
double doubleValue = LocalPrefs.getDouble('key', defaultValue: 0.0);
bool boolValue = LocalPrefs.getBool('key', defaultValue: false);
List<String> stringListValue = LocalPrefs.getStringList('key', defaultValue: []);
6. 删除数据
你可以使用 LocalPrefs
类中的方法来删除数据:
await LocalPrefs.remove('key');
7. 检查键是否存在
你可以检查某个键是否存在:
bool exists = LocalPrefs.containsKey('key');
8. 清除所有数据
你可以清除所有存储的数据:
await LocalPrefs.clear();
完整示例
以下是一个完整的示例,展示了如何使用 flutter_local_prefs
插件来存储和读取数据:
import 'package:flutter/material.dart';
import 'package:flutter_local_prefs/flutter_local_prefs.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await LocalPrefs.init();
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: HomeScreen(),
);
}
}
class HomeScreen extends StatefulWidget {
[@override](/user/override)
_HomeScreenState createState() => _HomeScreenState();
}
class _HomeScreenState extends State<HomeScreen> {
String _storedValue = '';
[@override](/user/override)
void initState() {
super.initState();
_loadStoredValue();
}
Future<void> _loadStoredValue() async {
String value = LocalPrefs.getString('myKey', defaultValue: 'No value stored');
setState(() {
_storedValue = value;
});
}
Future<void> _storeValue() async {
await LocalPrefs.setString('myKey', 'Hello, Flutter!');
_loadStoredValue();
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Flutter Local Prefs Example'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text('Stored Value: $_storedValue'),
SizedBox(height: 20),
ElevatedButton(
onPressed: _storeValue,
child: Text('Store Value'),
),
],
),
),
);
}
}