Flutter安全存储插件secure_store的使用
Flutter安全存储插件secure_store的使用
安全存储插件允许在设备上安全地存储秘密信息,可以使用密码或生物识别技术。
密码存储 | 生物识别存储 | |
---|---|---|
iOS | ✅ | ✅ |
Android | ✅ | ✅ |
Web | ✅ | ❌ |
Mac | ✅ | ✅ |
Windows | ✅ | ❌ |
Linux | ✅ | ❌ |
使用
生物识别存储
// 存储秘密信息
await BiometricStore().storeSecret(
secret: "Simplicity is the ultimate sophistication", // 要存储的秘密信息
key: "biometrics-store:secret", // 存储的键值
);
// 获取秘密信息
final secret = await BiometricStore().getSecret(
key: "biometrics-store:secret", // 存储的键值
);
// 删除秘密信息
await BiometricStore().deleteSecret(
key: "biometrics-store:secret", // 存储的键值
);
密码存储
首先,需要初始化密码存储,因为其底层使用了Hive。
// 在main.dart文件中
void main() {
PasswordStore.init(); // 初始化密码存储
runApp(const MyApp());
}
然后可以轻松使用密码存储:
// 存储秘密信息
await PasswordStore().storeSecret(
secret: "Simplicity is the ultimate sophistication", // 要存储的秘密信息
key: "password-store:secret", // 存储的键值
options: const PasswordStoreOptions(password: "1234"), // 设置密码选项
);
// 获取秘密信息
final secret = await PasswordStore().getSecret(
key: "password-store:secret", // 存储的键值
options: const PasswordStoreOptions(password: "1234"), // 设置密码选项
);
平台设置
iOS
在Info.plist
中添加NSFaceIDUsageDescription
权限:
<key>NSFaceIDUsageDescription</key>
<string>Use Touch ID or Face ID to process transactions.</string>
Android
编辑android/app/build.gradle
:
android {
defaultConfig {
minSdkVersion 23
}
}
将MainActivity
修改为继承FlutterFragmentActivity
而不是FlutterActivity
:
package com.example.example
import io.flutter.embedding.android.FlutterActivity
class MainActivity: FlutterFragmentActivity() {
}
更多关于Flutter安全存储插件secure_store的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter安全存储插件secure_store的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
在Flutter中,flutter_secure_storage
是一个常用的插件,用于安全地存储敏感数据,如密码、令牌等。它使用平台特定的安全存储机制,例如 iOS 的 Keychain 和 Android 的 Keystore。
1. 添加依赖
首先,在 pubspec.yaml
文件中添加 flutter_secure_storage
依赖:
dependencies:
flutter:
sdk: flutter
flutter_secure_storage: ^7.0.1
然后运行 flutter pub get
来安装依赖。
2. 导入插件
在需要使用 flutter_secure_storage
的 Dart 文件中导入插件:
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
3. 使用 FlutterSecureStorage
初始化
创建一个 FlutterSecureStorage
实例:
final storage = FlutterSecureStorage();
存储数据
使用 write
方法存储数据:
await storage.write(key: 'my_key', value: 'my_value');
读取数据
使用 read
方法读取数据:
String? value = await storage.read(key: 'my_key');
print(value); // 输出: my_value
删除数据
使用 delete
方法删除数据:
await storage.delete(key: 'my_key');
删除所有数据
使用 deleteAll
方法删除所有数据:
await storage.deleteAll();
检查数据是否存在
使用 containsKey
方法检查某个键是否存在:
bool containsKey = await storage.containsKey(key: 'my_key');
print(containsKey); // 输出: true 或 false
4. 示例代码
以下是一个完整的示例,展示了如何使用 flutter_secure_storage
来存储、读取和删除数据:
import 'package:flutter/material.dart';
import 'package:flutter_secure_storage/flutter_secure_storage.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 = FlutterSecureStorage();
String? storedValue;
Future<void> _storeData() async {
await storage.write(key: 'my_key', value: 'my_value');
print('Data stored');
}
Future<void> _readData() async {
String? value = await storage.read(key: 'my_key');
setState(() {
storedValue = value;
});
print('Data read: $value');
}
Future<void> _deleteData() async {
await storage.delete(key: 'my_key');
print('Data deleted');
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Flutter Secure Storage Example'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
ElevatedButton(
onPressed: _storeData,
child: Text('Store Data'),
),
ElevatedButton(
onPressed: _readData,
child: Text('Read Data'),
),
ElevatedButton(
onPressed: _deleteData,
child: Text('Delete Data'),
),
Text('Stored Value: $storedValue'),
],
),
),
);
}
}