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

1 回复

更多关于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'),
          ],
        ),
      ),
    );
  }
}
回到顶部