Flutter安全存储插件sentc_flutter_secure_storage的使用

Flutter安全存储插件sentc_flutter_secure_storage的使用

该插件使用 flutter_secure_storage 在本地设备上安全地存储密钥。

要更改存储方式,只需在初始化函数中设置存储选项。

import 'package:sentc/sentc.dart';
import 'package:sentc_flutter_secure_storage/sentc_flutter_secure_storage.dart';

void main() async {
  
  await Sentc.init(
    appToken: "5zMb6zs3dEM62n+FxjBilFPp+j9e7YUFA+7pi6Hi",
    storage: SecureStorage(), // 初始化时使用其他存储
  );
}

要安装并配置存储,请遵循flutter_secure_storage 指南

你也可以预先配置存储,然后将其设置为 sentc。这在你需要为存储设置其他选项时非常有用。

import 'package:sentc/sentc.dart';
import 'package:sentc_flutter_secure_storage/sentc_flutter_secure_storage.dart';

void main() async {

  // 设置其他 Android 选项以使用 android encryptedSharedPreferences(仅适用于 Android >= V5)
  AndroidOptions getAndroidOptions() => const AndroidOptions(
    encryptedSharedPreferences: true,
  );

  final storage = FlutterSecureStorage(aOptions: getAndroidOptions());
  
  await Sentc.init(
    appToken: "5zMb6zs3dEM62n+FxjBilFPp+j9e7YUFA+7pi6Hi",
    storage: SecureStorage(storage), // 使用带有选项的存储
  );
}

完整示例代码

以下是一个完整的示例代码,展示了如何使用 sentc_flutter_secure_storage 插件。

import 'package:flutter/material.dart';
import 'package:sentc/sentc.dart';
import 'package:sentc_flutter_secure_storage/sentc_flutter_secure_storage.dart';

void main() async {
  // 初始化 Sentc 并设置存储
  await Sentc.init(
    appToken: "5zMb6zs3dEM62n+FxjBilFPp+j9e7YUFA+7pi6Hi",
    storage: SecureStorage(), // 初始化时使用其他存储
  );

  runApp(const MyApp());
}

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

  [@override](/user/override)
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  [@override](/user/override)
  void initState() {
    super.initState();
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('插件示例应用'),
        ),
        body: const Center(
          child: Text('运行在:'),
        ),
      ),
    );
  }
}

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

1 回复

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


当然,以下是如何在Flutter应用中使用sentc_flutter_secure_storage插件来进行安全存储的示例代码。这个插件允许你以安全的方式在设备上存储敏感数据,如用户凭证、API密钥等。

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

dependencies:
  flutter:
    sdk: flutter
  sentc_flutter_secure_storage: ^x.y.z  # 替换为最新版本号

然后,运行flutter pub get来安装依赖。

接下来,在你的Flutter应用中,你可以按照以下步骤使用sentc_flutter_secure_storage

  1. 导入插件

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

import 'package:sentc_flutter_secure_storage/sentc_flutter_secure_storage.dart';
  1. 初始化存储

创建一个SecureStorage实例:

final storage = new SecureStorage();
  1. 写入数据

使用write方法将数据写入安全存储。例如,存储一个用户的API令牌:

Future<void> saveApiToken(String apiToken) async {
  try {
    await storage.write(key: 'api_token', value: apiToken);
    print('API Token saved successfully');
  } catch (e) {
    print('Error saving API Token: $e');
  }
}
  1. 读取数据

使用read方法从安全存储中读取数据。例如,读取之前存储的API令牌:

Future<String?> readApiToken() async {
  try {
    String? apiToken = await storage.read(key: 'api_token');
    print('API Token read: $apiToken');
    return apiToken;
  } catch (e) {
    print('Error reading API Token: $e');
    return null;
  }
}
  1. 删除数据

使用delete方法从安全存储中删除数据。例如,删除API令牌:

Future<void> deleteApiToken() async {
  try {
    await storage.delete(key: 'api_token');
    print('API Token deleted successfully');
  } catch (e) {
    print('Error deleting API Token: $e');
  }
}
  1. 清空存储

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

Future<void> clearAllStorage() async {
  try {
    await storage.deleteAll();
    print('All data cleared successfully');
  } catch (e) {
    print('Error clearing all data: $e');
  }
}

完整示例

下面是一个完整的示例,展示了如何使用sentc_flutter_secure_storage插件进行数据的写入、读取、删除和清空操作:

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: SecureStorageDemo(),
    );
  }
}

class SecureStorageDemo extends StatefulWidget {
  @override
  _SecureStorageDemoState createState() => _SecureStorageDemoState();
}

class _SecureStorageDemoState extends State<SecureStorageDemo> {
  final storage = new SecureStorage();

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Secure Storage Demo'),
      ),
      body: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            ElevatedButton(
              onPressed: () async {
                await saveApiToken('example_token_12345');
              },
              child: Text('Save API Token'),
            ),
            SizedBox(height: 16),
            ElevatedButton(
              onPressed: () async {
                String? token = await readApiToken();
                ScaffoldMessenger.of(context).showSnackBar(
                  SnackBar(content: Text('API Token: $token')),
                );
              },
              child: Text('Read API Token'),
            ),
            SizedBox(height: 16),
            ElevatedButton(
              onPressed: () async {
                await deleteApiToken();
              },
              child: Text('Delete API Token'),
            ),
            SizedBox(height: 16),
            ElevatedButton(
              onPressed: () async {
                await clearAllStorage();
              },
              child: Text('Clear All Storage'),
            ),
          ],
        ),
      ),
    );
  }

  Future<void> saveApiToken(String apiToken) async {
    try {
      await storage.write(key: 'api_token', value: apiToken);
      print('API Token saved successfully');
    } catch (e) {
      print('Error saving API Token: $e');
    }
  }

  Future<String?> readApiToken() async {
    try {
      String? apiToken = await storage.read(key: 'api_token');
      print('API Token read: $apiToken');
      return apiToken;
    } catch (e) {
      print('Error reading API Token: $e');
      return null;
    }
  }

  Future<void> deleteApiToken() async {
    try {
      await storage.delete(key: 'api_token');
      print('API Token deleted successfully');
    } catch (e) {
      print('Error deleting API Token: $e');
    }
  }

  Future<void> clearAllStorage() async {
    try {
      await storage.deleteAll();
      print('All data cleared successfully');
    } catch (e) {
      print('Error clearing all data: $e');
    }
  }
}

这个示例应用展示了如何使用sentc_flutter_secure_storage插件进行基本的安全存储操作。你可以根据需要在你的应用中扩展这些功能。

回到顶部