Flutter安全存储插件flutter_secure_storage_darwin的使用

发布于 1周前 作者 caililin 来自 Flutter

Flutter 安全存储插件 flutter_secure_storage_darwin 的使用

flutter_secure_storage_darwin

这是为 iOS 和 macOS 提供的 flutter_secure_storage 的平台特定实现。

特性

  • 使用 Keychain API 进行安全存储。
  • 充分集成到 iOS 和 macOS 的安全特性中。

安装

在你的 pubspec.yaml 文件中添加依赖,并运行 flutter pub get

dependencies:
  flutter_secure_storage: ^8.0.0

运行命令:

flutter pub get

配置

你还需要将 Keychain Sharing 作为功能添加到你的 iOS 或 macOS 应用程序。为此,请在以下两个文件中添加以下内容:

  • (ios/macos)/Runner/DebugProfile.entitlements
  • (ios/macos)/Runner/Release.entitlements
<key>keychain-access-groups</key>
<array/>

如果你的应用程序已配置为使用 App Groups,则需要将 App Group 的名称添加到上述 keychain-access-groups 参数中。否则,值将看似成功写入但实际上从未被写入。例如,如果您的应用程序有一个名为 “aoeu” 的 App Group,则上述值应更改为:

<key>keychain-access-groups</key>
<array>
    <string>$(AppIdentifierPrefix)aoeu</string>
</array>

如果你通过 XCode 配置此值,则在 Keychain Sharing 部分设置的字符串应为 “aoeu”,XCode 在保存配置时会附加 $(AppIdentifierPrefix)

使用

要了解通用使用说明,请参阅 flutter_secure_storage 的主文档

示例代码

以下是一个简单的示例,展示如何使用 flutter_secure_storage_darwin 插件进行安全存储。

首先,在你的 Dart 文件中导入插件:

import 'package:flutter_secure_storage/flutter_secure_storage.dart';

然后创建一个实例:

final storage = FlutterSecureStorage();

接下来,你可以使用 write 方法来存储数据:

// 写入数据
await storage.write(key: 'username', value: 'JohnDoe');

使用 read 方法来读取数据:

// 读取数据
String? username = await storage.read(key: 'username');
print('Username: $username');

使用 delete 方法来删除数据:

// 删除数据
await storage.delete(key: 'username');

使用 clear 方法来清除所有数据:

// 清除所有数据
await storage.deleteAll();

更多关于Flutter安全存储插件flutter_secure_storage_darwin的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter安全存储插件flutter_secure_storage_darwin的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是如何在Flutter项目中使用flutter_secure_storage_darwin插件进行安全存储的示例代码。请注意,flutter_secure_storage_darwinflutter_secure_storage插件的一个特定于macOS和iOS的实现。因此,你通常会使用flutter_secure_storage插件,该插件会自动在不同的平台上选择正确的实现。

首先,确保你已经在pubspec.yaml文件中添加了flutter_secure_storage依赖:

dependencies:
  flutter:
    sdk: flutter
  flutter_secure_storage: ^5.0.2  # 请检查最新版本号

然后,运行flutter pub get来获取依赖。

接下来,在你的Flutter项目中,你可以按照以下步骤使用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
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Secure Storage Example',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: SecureStorageExample(),
    );
  }
}

class SecureStorageExample extends StatefulWidget {
  @override
  _SecureStorageExampleState createState() => _SecureStorageExampleState();
}

class _SecureStorageExampleState extends State<SecureStorageExample> {
  final FlutterSecureStorage storage = FlutterSecureStorage();
  String? retrievedValue;

  @override
  void initState() {
    super.initState();
    // 在初始化时尝试从存储中检索值
    retrieveValue();
  }

  Future<void> writeValue() async {
    final String key = 'my_secure_key';
    final String value = 'my_secure_value';
    await storage.write(key: key, value: value);
    print('Value written to secure storage: $value');
    // 更新UI显示存储的值(在这个例子中,我们不需要立即更新,因为我们稍后检索它)
  }

  Future<void> retrieveValue() async {
    final String key = 'my_secure_key';
    final String? value = await storage.read(key: key);
    setState(() {
      retrievedValue = value;
    });
    print('Value retrieved from secure storage: $value');
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter Secure Storage Example'),
      ),
      body: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            ElevatedButton(
              onPressed: writeValue,
              child: Text('Write Value'),
            ),
            SizedBox(height: 20),
            Text(
              'Retrieved Value: $retrievedValue',
              style: TextStyle(fontSize: 18),
            ),
          ],
        ),
      ),
    );
  }
}

在这个示例中:

  1. 我们导入了flutter_secure_storage包。
  2. 创建了一个FlutterSecureStorage实例。
  3. initState方法中,我们尝试从存储中检索值。
  4. 提供了writeValueretrieveValue两个方法,分别用于写入和检索安全存储中的值。
  5. 在UI中,有两个按钮,一个用于写入值,另一个按钮的值会在UI中显示(一旦值被检索)。

这个示例展示了如何在Flutter中使用flutter_secure_storage进行基本的安全存储操作。对于macOS和iOS,flutter_secure_storage会自动使用flutter_secure_storage_darwin实现,因此你无需担心平台特定的实现细节。

回到顶部