Flutter本地安全存储及检查插件secure_storage_local_storage_inspector的使用

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

Flutter本地安全存储及检查插件secure_storage_local_storage_inspector的使用

secure_storage_local_storage_inspector 是一个提供本地存储检查功能的Flutter插件。它允许开发者在开发过程中查看和调试应用程序中使用的安全存储数据。该插件依赖于 storage_inspectorflutter_secure_storage

1. 插件介绍

这个插件提供了对 FlutterSecureStorage 的监控能力,允许你在开发工具中实时查看存储的数据。更多详细信息可以参考 storage_inspector

2. 示例代码

以下是一个完整的示例代码,展示了如何在Flutter应用中集成并使用 secure_storage_local_storage_inspector 插件。

import 'package:flutter/material.dart';
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
import 'package:secure_storage_local_storage_inspector/secure_storage_local_storage_inspector.dart';
import 'package:storage_inspector/storage_inspector.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();

  // 设置日志记录器
  storageInspectorLogger = (e) => print(e);

  // 初始化安全存储
  const storage = FlutterSecureStorage();

  // 创建服务器驱动
  final driver = StorageServerDriver(
    bundleId: 'com.example.test',
    icon: '<some icon>', // 可以是图标路径或Base64编码的图标数据
  );

  // 创建键值服务器
  final keyValueServer =
      SecureStorageKeyValueServer(storage, 'Secure', keySuggestions: {
    'testBool',
    'testInt',
    'testFloat',
  });

  // 将键值服务器添加到驱动
  driver.addKeyValueServer(keyValueServer);

  // 启动服务器(不等待连接)
  await driver.start(paused: false);

  // 运行应用
  runApp(MyApp());

  // 模拟应用运行一段时间
  await Future<void>.delayed(const Duration(minutes: 15));

  // 停止服务器(可选)
  await driver.stop();
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key? key, required this.title}) : super(key: key);

  final String title;

  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  int _counter = 0;
  final storage = const FlutterSecureStorage();

  void _incrementCounter() async {
    setState(() {
      _counter++;
    });

    // 将计数器值存储到安全存储中
    await storage.write(key: 'counter', value: _counter.toString());
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text(
              'You have pushed the button this many times:',
            ),
            FutureBuilder<String?>(
              future: storage.read(key: 'counter'),
              builder: (context, snapshot) {
                if (snapshot.hasData) {
                  return Text(
                    '${snapshot.data}',
                    style: Theme.of(context).textTheme.headline4,
                  );
                } else {
                  return Text('0');
                }
              },
            ),
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: _incrementCounter,
        tooltip: 'Increment',
        child: Icon(Icons.add),
      ),
    );
  }
}

3. 说明

  • 初始化:首先确保Flutter绑定已初始化,并设置日志记录器以便调试。
  • 安全存储:使用 FlutterSecureStorage 来处理安全存储操作。
  • 服务器驱动:创建并配置 StorageServerDriver,用于管理存储服务器。
  • 键值服务器:通过 SecureStorageKeyValueServer 提供对安全存储的访问。
  • 启动与停止:启动服务器后,应用开始运行并在一定时间后停止服务器。

此示例展示了如何将 secure_storage_local_storage_inspector 集成到Flutter应用中,并演示了基本的存储操作。通过这种方式,你可以在开发过程中更方便地查看和调试应用中的安全存储数据。


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

1 回复

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


在Flutter中,使用secure_storagelocal_storage_inspector插件可以分别实现本地安全存储和本地存储的检查功能。下面是如何在Flutter项目中集成和使用这两个插件的代码示例。

1. 添加依赖

首先,在pubspec.yaml文件中添加这两个插件的依赖:

dependencies:
  flutter:
    sdk: flutter
  secure_storage: ^5.0.2  # 请检查最新版本号
  local_storage_inspector: ^0.3.0  # 请检查最新版本号

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

2. 配置权限(如果需要)

对于Android,你可能需要在android/app/src/main/AndroidManifest.xml中添加权限(具体取决于secure_storage的实现,比如对于基于KeyStore的存储可能需要一些权限,但大多数情况下默认配置已经足够)。

3. 使用secure_storage进行本地安全存储

以下是如何使用secure_storage插件存储和检索数据的示例代码:

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

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

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

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

class _SecureStorageExampleState extends State<SecureStorageExample> {
  final SecureStorage _secureStorage = SecureStorage();

  Future<void> _writeData() async {
    await _secureStorage.write(key: 'my_key', value: 'my_value');
    print('Data written to secure storage');
  }

  Future<void> _readData() async {
    String? value = await _secureStorage.read(key: 'my_key');
    print('Data read from secure storage: $value');
    setState(() {
      // 更新UI,如果需要显示读取的数据
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Secure Storage Example'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            ElevatedButton(
              onPressed: _writeData,
              child: Text('Write Data'),
            ),
            SizedBox(height: 20),
            ElevatedButton(
              onPressed: _readData,
              child: Text('Read Data'),
            ),
          ],
        ),
      ),
    );
  }
}

4. 使用local_storage_inspector进行本地存储检查

local_storage_inspector插件通常用于调试目的,以便在开发过程中检查本地存储的内容。以下是如何集成和使用它的示例:

import 'package:flutter/material.dart';
import 'package:local_storage_inspector/local_storage_inspector.dart';
import 'package:shared_preferences/shared_preferences.dart';  // 通常与localStorage一起使用

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

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

class LocalStorageInspectorExample extends StatefulWidget {
  @override
  _LocalStorageInspectorExampleState createState() => _LocalStorageInspectorExampleState();
}

class _LocalStorageInspectorExampleState extends State<LocalStorageInspectorExample> {
  late SharedPreferences _sharedPreferences;

  @override
  void initState() {
    super.initState();
    _initializeSharedPreferences();
  }

  Future<void> _initializeSharedPreferences() async {
    _sharedPreferences = await SharedPreferences.getInstance();
    // 在这里可以进行一些初始化操作,比如存储一些默认值
    await _sharedPreferences.setString('example_key', 'example_value');
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Local Storage Inspector Example'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: () {
            // 打开本地存储检查器
            LocalStorageInspector.open(context, storage: _sharedPreferences);
          },
          child: Text('Open Local Storage Inspector'),
        ),
      ),
    );
  }
}

注意:local_storage_inspector通常与SharedPreferences一起使用,但你也可以根据需要将其与其他存储机制结合使用。

通过这些代码示例,你可以在Flutter应用中实现本地安全存储,并使用本地存储检查器来调试和查看存储的数据。

回到顶部