Flutter安全存储插件secrethero_flutter的使用

Flutter安全存储插件secrethero_flutter的使用

简介

Secret Hero是一个用于在应用程序中添加游戏功能的SDK。该SDK使开发者能够集成引人入胜的游戏体验,包括排行榜跟踪和优惠券奖励,从而增强用户在应用中的参与度和留存率。

安装

要将SecretHero库集成到你的项目中,请添加以下依赖项:

$ flutter pub add secrethero_flutter

这将在你的包的pubspec.yaml文件中添加如下一行(并运行隐式的flutter pub get):

dependencies:
  secrethero_flutter: "latest_version"

设置

初始化Secret Hero

  1. SecretHero SDK中的初始化函数负责使用特定的配置设置和监听器来初始化SDK。
  2. SecretHeroConfig 类负责配置初始化SecretHero SDK。
SecretHero().initialize(secretHeroConfig, secretHeroListener);
SecretHeroConfig(
  token: "your_token",
  userId: "user_id",
  displayName: "display_name",
  theme: SecretHeroTheme(
    primaryColor: "#191D21",
    secondaryColor: "#FFFFFF",
    highlightColor: "#7B61FF",
    buttonColor: "#92FFD7",
  )
);
  • token: 用于认证和与SecretHero SDK交互的令牌。
  • userId: 与SecretHero会话关联的用户ID。
  • displayName: 用户在SecretHero环境中的显示名称。
  • theme: SecretHeroTheme 类封装了各种视觉属性,允许自定义平台的外观。
  1. SecretHeroEventListener 代理作为SecretHero SDK中的回调机制,提供了处理SDK生命周期和操作期间的各种事件和响应的方法。
final secretHeroListener = SecretHeroEventListener(
  onInitialized: () {
    print("onInitialized");
  },
  onInitializeFailed: (errorMessage) {
    print("onInitializeFailed $errorMessage");
  }, 
  onOpen: () {
    print("onOpen");
  }, 
  onClose: () {
    print("onClose");
  }, 
  onEvent: (event) {
    print("onEvent $event");
  }
);
  • onInitialized(): 当SecretHero SDK成功初始化时调用。
  • onInitializeFailed(errorMessage: String): 在SecretHero SDK初始化失败时触发。
  • onClose(): 当SecretHero会话关闭或终止时调用。
  • onOpen(): 当SecretHero会话打开或激活时执行。
  • onEvent(): 当SecretHero事件累积时执行。
  1. release() 函数在SecretHero中用于释放和重置与SecretHero相关的配置和监听器。需要在onDestroy时调用。
SecretHero().release();

示例代码

import 'package:flutter/material.dart';

import 'package:secrethero_flutter/secrethero_flutter.dart';
import 'package:secrethero_flutter/secrethero_flutter_method_channel.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatefulWidget {
  const MyApp({super.key});

  @override
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  final secretHeroConfig = SecretHeroConfig(
    token: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjbGllbnRJRCI6IjEiLCJpYXQiOjE2OTgwNzA3Mjl9.Tf_QBI0PM8EHVI0xqmFdqkjtcI5-q2ciyGhnASBhfY8",
    userId: "99999999",
    displayName: "TestFlutterUser",
    iconImage: "assets/images/SDKIcon.jpg",
    country: "tr",
    language: "tr",
    isLayoutLTR: true,
    theme: SecretHeroTheme(
      primaryColor: "#191D21",
      secondaryColor: "#FFFFFF",
      highlightColor: "#7B61FF",
      buttonColor: "#92FFD7",
    )
  );

  final secretHeroListener = SecretHeroEventListener(
    onInitialized: () {
      print("onInitialized");
    },
    onInitializeFailed: (errorMessage) {
      print("onInitializeFailed $errorMessage");
    },
    onOpen: () {
      print("onOpen");
    },
    onClose: () {
      print("onClose");
    },
    onEvent: (event, extras) {
      print("onEvent $event $extras");
    }
  );

  @override
  void initState() {
    super.initState();
    SecretHero().initialize(secretHeroConfig, secretHeroListener);
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Plugin example app'),
        ),
        body: Column(
          children: [
            TextButton(
              style: ButtonStyle(
                foregroundColor: MaterialStateProperty.all<Color>(Colors.blue),
              ),
              onPressed: () {
                SecretHero().initialize(secretHeroConfig, secretHeroListener);
              },
              child: const Text('SecretHero - initialize'),
            ),
            TextButton(
              style: ButtonStyle(
                foregroundColor: MaterialStateProperty.all<Color>(Colors.blue),
              ),
              onPressed: () {
                SecretHero().start();
              },
              child: const Text('SecretHero - start'),
            ),
            TextButton(
              style: ButtonStyle(
                foregroundColor: MaterialStateProperty.all<Color>(Colors.blue),
              ),
              onPressed: () {
                SecretHero().release();
              },
              child: const Text('SecretHero - release'),
            )
          ],
        ),
      ),
    );
  }
}

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

1 回复

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


secrethero_flutter 是一个用于在 Flutter 应用中安全存储敏感数据的插件。它提供了加密存储功能,帮助开发者保护用户的敏感信息,如密码、令牌等。

1. 安装插件

首先,你需要在 pubspec.yaml 文件中添加 secrethero_flutter 插件的依赖:

dependencies:
  flutter:
    sdk: flutter
  secrethero_flutter: ^1.0.0  # 请使用最新版本

然后,运行 flutter pub get 来安装插件。

2. 导入插件

在你的 Dart 文件中导入 secrethero_flutter 插件:

import 'package:secrethero_flutter/secrethero_flutter.dart';

3. 初始化 SecretHero

在使用 SecretHero 之前,你需要先初始化它。通常你可以在 main.dart 或其他合适的地方进行初始化:

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await SecretHero.init();
  runApp(MyApp());
}

4. 存储数据

使用 SecretHero 存储数据非常简单。你可以使用 write 方法来存储一个键值对:

await SecretHero.write(key: 'my_key', value: 'my_value');

5. 读取数据

要读取存储的数据,可以使用 read 方法:

String? value = await SecretHero.read(key: 'my_key');
print(value);  // 输出: my_value

6. 删除数据

如果你想删除某个键值对,可以使用 delete 方法:

await SecretHero.delete(key: 'my_key');

7. 检查是否存在

你可以使用 containsKey 方法来检查某个键是否存在:

bool exists = await SecretHero.containsKey(key: 'my_key');
print(exists);  // 输出: true 或 false

8. 清除所有数据

如果你想清除所有存储的数据,可以使用 clear 方法:

await SecretHero.clear();

9. 处理异常

在使用 SecretHero 时,可能会遇到一些异常情况,例如密钥不存在或存储失败。你可以使用 try-catch 块来捕获并处理这些异常:

try {
  await SecretHero.write(key: 'my_key', value: 'my_value');
} catch (e) {
  print('Error writing data: $e');
}

10. 注意事项

  • 平台支持: secrethero_flutter 支持 Android 和 iOS 平台。
  • 加密机制: 该插件使用平台提供的安全存储机制来加密数据,确保数据的安全性。
  • 异步操作: 所有操作都是异步的,确保不会阻塞 UI 线程。

11. 示例代码

以下是一个完整的示例代码,展示了如何使用 secrethero_flutter 来存储、读取和删除数据:

import 'package:flutter/material.dart';
import 'package:secrethero_flutter/secrethero_flutter.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await SecretHero.init();
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: Text('SecretHero Example')),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              ElevatedButton(
                onPressed: () async {
                  await SecretHero.write(key: 'my_key', value: 'my_value');
                  print('Data stored');
                },
                child: Text('Store Data'),
              ),
              ElevatedButton(
                onPressed: () async {
                  String? value = await SecretHero.read(key: 'my_key');
                  print('Data read: $value');
                },
                child: Text('Read Data'),
              ),
              ElevatedButton(
                onPressed: () async {
                  await SecretHero.delete(key: 'my_key');
                  print('Data deleted');
                },
                child: Text('Delete Data'),
              ),
            ],
          ),
        ),
      ),
    );
  }
}
回到顶部