Flutter安全存储插件finap_secure_shared_preferences的使用
Flutter安全存储插件finap_secure_shared_preferences的使用
特性
通过 finap_secure_shared_preferences
插件,可以以安全的方式读取和写入共享偏好数据。
开始使用
在项目中添加该插件:
flutter pub add finap_secure_shared_preferences
使用方法
读取数据
通过指定键值读取数据:
import 'package:finap_secure_shared_preferences/finap_secure_shared_preferences.dart';
Future<String?> read(String key) async {
// 创建一个实例
final storage = FinapSecureSharedPreferences();
// 异步读取数据
return await storage.read(key: key);
}
读取所有数据
一次性读取所有的数据:
import 'package:finap_secure_shared_preferences/finap_secure_shared_preferences.dart';
Future<Map<String, String>?> readAll() async {
// 创建一个实例
final storage = FinapSecureSharedPreferences();
// 异步读取所有数据
return await storage.readAll();
}
删除数据
通过指定键值删除数据:
import 'package:finap_secure_shared_preferences/finap_secure_shared_preferences.dart';
Future<void> delete(String key) async {
// 创建一个实例
final storage = FinapSecureSharedPreferences();
// 异步删除数据
await storage.delete(key: key);
}
删除所有数据
清除所有的存储数据:
import 'package:finap_secure_shared_preferences/finap_secure_shared_preferences.dart';
Future<void> deleteAll() async {
// 创建一个实例
final storage = FinapSecureSharedPreferences();
// 异步清空所有数据
await storage.deleteAll();
}
写入数据
向存储中写入数据,并根据设备类型设置不同的选项(如 iOS 设备):
import 'package:finap_secure_shared_preferences/finap_secure_shared_preferences.dart';
import 'package:flutter/services.dart';
Future<void> write(String key, String value) async {
// 创建一个实例
final storage = FinapSecureSharedPreferences();
// 判断是否为 iOS 设备
if (Platform.isIOS) {
// 设置 iOS 的访问选项
final options = IOSOptions(
accessibility: IOSAccessibility.first_unlock // 需要在解锁后才能访问
);
// 写入数据并应用选项
await storage.write(key: key, value: value, iOptions: options);
} else {
// 其他平台直接写入数据
await storage.write(key: key, value: value);
}
}
完整示例
以下是一个完整的示例,展示了如何使用 finap_secure_shared_preferences
插件来安全地存储和读取数据:
import 'package:flutter/material.dart';
import 'package:finap_secure_shared_preferences/finap_secure_shared_preferences.dart';
import 'package:flutter/services.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: SecureStorageExample(),
);
}
}
class SecureStorageExample extends StatefulWidget {
[@override](/user/override)
_SecureStorageExampleState createState() => _SecureStorageExampleState();
}
class _SecureStorageExampleState extends State<SecureStorageExample> {
final _storage = FinapSecureSharedPreferences();
final TextEditingController _keyController = TextEditingController();
final TextEditingController _valueController = TextEditingController();
String? _result;
Future<void> _writeData() async {
final key = _keyController.text;
final value = _valueController.text;
if (Platform.isIOS) {
final options = IOSOptions(
accessibility: IOSAccessibility.first_unlock); // iOS 设备解锁后可访问
await _storage.write(key: key, value: value, iOptions: options);
} else {
await _storage.write(key: key, value: value);
}
setState(() {
_result = "数据已保存";
});
}
Future<void> _readData() async {
final key = _keyController.text;
final result = await _storage.read(key: key);
setState(() {
_result = result ?? "未找到数据";
});
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("安全存储示例"),
),
body: Padding(
padding: const EdgeInsets.all(16.0),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
TextField(
controller: _keyController,
decoration: InputDecoration(hintText: "请输入键"),
),
TextField(
controller: _valueController,
decoration: InputDecoration(hintText: "请输入值"),
),
SizedBox(height: 20),
ElevatedButton(
onPressed: _writeData,
child: Text("保存数据"),
),
SizedBox(height: 20),
ElevatedButton(
onPressed: _readData,
child: Text("读取数据"),
),
SizedBox(height: 20),
Text(_result ?? ""),
],
),
),
);
}
}
更多关于Flutter安全存储插件finap_secure_shared_preferences的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter安全存储插件finap_secure_shared_preferences的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
finap_secure_shared_preferences
是一个用于在 Flutter 应用中安全存储数据的插件。它基于 SharedPreferences
,但提供了额外的加密层,确保存储的数据更加安全。以下是如何使用 finap_secure_shared_preferences
插件的详细步骤。
1. 添加依赖
首先,在 pubspec.yaml
文件中添加 finap_secure_shared_preferences
插件的依赖:
dependencies:
flutter:
sdk: flutter
finap_secure_shared_preferences: ^1.0.0 # 请使用最新版本
然后运行 flutter pub get
来安装依赖。
2. 初始化插件
在使用插件之前,需要先进行初始化。通常可以在 main()
函数中完成初始化:
import 'package:flutter/material.dart';
import 'package:finap_secure_shared_preferences/finap_secure_shared_preferences.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await FinapSecureSharedPreferences.init();
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
title: 'Secure Shared Preferences Demo',
home: HomeScreen(),
);
}
}
3. 存储数据
使用 FinapSecureSharedPreferences
来存储数据。你可以存储 String
、int
、double
、bool
等类型的数据。
import 'package:flutter/material.dart';
import 'package:finap_secure_shared_preferences/finap_secure_shared_preferences.dart';
class HomeScreen extends StatelessWidget {
Future<void> _saveData() async {
await FinapSecureSharedPreferences.setString('key1', 'secure_value');
await FinapSecureSharedPreferences.setInt('key2', 123);
await FinapSecureSharedPreferences.setBool('key3', true);
print('Data saved securely');
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Secure Shared Preferences'),
),
body: Center(
child: ElevatedButton(
onPressed: _saveData,
child: Text('Save Secure Data'),
),
),
);
}
}
4. 读取数据
使用 FinapSecureSharedPreferences
来读取存储的数据。
import 'package:flutter/material.dart';
import 'package:finap_secure_shared_preferences/finap_secure_shared_preferences.dart';
class HomeScreen extends StatelessWidget {
Future<void> _readData() async {
String? value1 = await FinapSecureSharedPreferences.getString('key1');
int? value2 = await FinapSecureSharedPreferences.getInt('key2');
bool? value3 = await FinapSecureSharedPreferences.getBool('key3');
print('Value1: $value1');
print('Value2: $value2');
print('Value3: $value3');
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Secure Shared Preferences'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
ElevatedButton(
onPressed: _readData,
child: Text('Read Secure Data'),
),
],
),
),
);
}
}
5. 删除数据
你可以使用 remove()
方法来删除存储的数据。
Future<void> _removeData() async {
await FinapSecureSharedPreferences.remove('key1');
print('Data removed');
}
6. 清除所有数据
你可以使用 clear()
方法来清除所有存储的数据。
Future<void> _clearData() async {
await FinapSecureSharedPreferences.clear();
print('All data cleared');
}
7. 注意事项
finap_secure_shared_preferences
使用加密来保护存储的数据,因此它比普通的SharedPreferences
更安全。- 由于数据是加密存储的,读取和写入操作可能会比普通的
SharedPreferences
稍慢。 - 确保在使用插件之前进行初始化,否则可能会导致运行时错误。
8. 示例代码
以下是一个完整的示例代码,展示了如何在 Flutter 应用中使用 finap_secure_shared_preferences
:
import 'package:flutter/material.dart';
import 'package:finap_secure_shared_preferences/finap_secure_shared_preferences.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await FinapSecureSharedPreferences.init();
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
title: 'Secure Shared Preferences Demo',
home: HomeScreen(),
);
}
}
class HomeScreen extends StatelessWidget {
Future<void> _saveData() async {
await FinapSecureSharedPreferences.setString('key1', 'secure_value');
await FinapSecureSharedPreferences.setInt('key2', 123);
await FinapSecureSharedPreferences.setBool('key3', true);
print('Data saved securely');
}
Future<void> _readData() async {
String? value1 = await FinapSecureSharedPreferences.getString('key1');
int? value2 = await FinapSecureSharedPreferences.getInt('key2');
bool? value3 = await FinapSecureSharedPreferences.getBool('key3');
print('Value1: $value1');
print('Value2: $value2');
print('Value3: $value3');
}
Future<void> _removeData() async {
await FinapSecureSharedPreferences.remove('key1');
print('Data removed');
}
Future<void> _clearData() async {
await FinapSecureSharedPreferences.clear();
print('All data cleared');
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Secure Shared Preferences'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
ElevatedButton(
onPressed: _saveData,
child: Text('Save Secure Data'),
),
SizedBox(height: 20),
ElevatedButton(
onPressed: _readData,
child: Text('Read Secure Data'),
),
SizedBox(height: 20),
ElevatedButton(
onPressed: _removeData,
child: Text('Remove Data'),
),
SizedBox(height: 20),
ElevatedButton(
onPressed: _clearData,
child: Text('Clear All Data'),
),
],
),
),
);
}
}