Flutter安全存储插件getsecure的使用

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

Flutter安全存储插件getsecure的使用

在移动应用开发中,安全地存储敏感信息是一项非常重要的任务。getsecure 插件为 Flutter 开发者提供了一种简单的方式来安全地存储数据。本文将详细介绍如何使用 getsecure 插件,并提供一个完整的示例代码。

安装getsecure插件

首先,你需要在项目的 pubspec.yaml 文件中添加 getsecure 依赖:

dependencies:
  getsecure: ^1.0.0

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

使用getsecure插件

以下是一个简单的示例代码,展示了如何使用 getsecure 插件来安全地存储和读取数据:

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

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('GetSecure Demo'),
        ),
        body: Center(
          child: SecureStorageDemo(),
        ),
      ),
    );
  }
}

class SecureStorageDemo extends StatefulWidget {
  [@override](/user/override)
  _SecureStorageDemoState createState() => _SecureStorageDemoState();
}

class _SecureStorageDemoState extends State<SecureStorageDemo> {
  final _storageKey = "my_secure_key";
  final _storageValue = "my_secure_value";
  String _storedValue = "";

  [@override](/user/override)
  void initState() {
    super.initState();
    // 初始化时尝试从安全存储中读取数据
    _readFromSecureStorage();
  }

  Future<void> _storeToSecureStorage() async {
    try {
      await GetSecure.setString(_storageKey, _storageValue);
      print("Data stored successfully");
    } catch (e) {
      print("Error storing data: $e");
    }
  }

  Future<void> _readFromSecureStorage() async {
    try {
      final value = await GetSecure.getString(_storageKey);
      setState(() {
        _storedValue = value ?? "";
      });
    } catch (e) {
      print("Error reading data: $e");
    }
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Column(
      mainAxisAlignment: MainAxisAlignment.center,
      children: [
        ElevatedButton(
          onPressed: _storeToSecureStorage,
          child: Text("Store Data"),
        ),
        SizedBox(height: 20),
        Text("Stored Value: $_storedValue"),
      ],
    );
  }
}

代码解释

  1. 导入库

    import 'package:getsecure/getsecure.dart';
    
  2. 初始化并配置应用

    void main() {
      runApp(MyApp());
    }
    
  3. 创建应用主界面

    class MyApp extends StatelessWidget {
      [@override](/user/override)
      Widget build(BuildContext context) {
        return MaterialApp(
          home: Scaffold(
            appBar: AppBar(
              title: Text('GetSecure Demo'),
            ),
            body: Center(
              child: SecureStorageDemo(),
            ),
          ),
        );
      }
    }
    
  4. 定义安全存储的键值对

    final _storageKey = "my_secure_key";
    final _storageValue = "my_secure_value";
    
  5. 初始化时尝试从安全存储中读取数据

    [@override](/user/override)
    void initState() {
      super.initState();
      _readFromSecureStorage();
    }
    
  6. 存储数据到安全存储

    Future<void> _storeToSecureStorage() async {
      try {
        await GetSecure.setString(_storageKey, _storageValue);
        print("Data stored successfully");
      } catch (e) {
        print("Error storing data: $e");
      }
    }
    
  7. 从安全存储中读取数据

    Future<void> _readFromSecureStorage() async {
      try {
        final value = await GetSecure.getString(_storageKey);
        setState(() {
          _storedValue = value ?? "";
        });
      } catch (e) {
        print("Error reading data: $e");
      }
    }
    
  8. 创建UI界面

    [@override](/user/override)
    Widget build(BuildContext context) {
      return Column(
        mainAxisAlignment: MainAxisAlignment.center,
        children: [
          ElevatedButton(
            onPressed: _storeToSecureStorage,
            child: Text("Store Data"),
          ),
          SizedBox(height: 20),
          Text("Stored Value: $_storedValue"),
        ],
      );
    }
    

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

1 回复

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


当然,以下是如何在Flutter项目中使用get_storage插件进行安全存储的一个基本示例。get_storage是一个流行的Flutter插件,它提供了一个简单的方法来持久化存储数据,尽管它本身并不提供像加密这样的高级安全功能。如果你需要格外高的安全性,可能需要结合其他加密库使用。但这里我们仅展示get_storage的基本用法。

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

dependencies:
  flutter:
    sdk: flutter
  get_storage: ^2.0.3  # 请检查最新版本号

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

接下来,你可以在你的Flutter应用中这样使用GetStorage

  1. 初始化存储

在你的应用的主文件(通常是main.dart)中,初始化GetStorage

import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:get_storage/get_storage.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  final box = GetStorage();
  // 打开存储(这一步是可选的,因为GetStorage会自动处理打开和关闭)
  await box.init();
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return GetMaterialApp(
      home: HomeScreen(),
    );
  }
}
  1. 读写数据

在你的一个屏幕(例如HomeScreen)中,你可以读写数据。

import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:get_storage/get_storage.dart';

class HomeScreen extends StatelessWidget {
  final box = Get.find<GetStorage>();

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('GetStorage Example'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            ElevatedButton(
              onPressed: () async {
                // 写数据
                await box.write('key', 'Hello, GetStorage!');
                SnackBar(content: Text('Data saved')).show(context);
              },
              child: Text('Save Data'),
            ),
            SizedBox(height: 20),
            ElevatedButton(
              onPressed: () async {
                // 读数据
                String? value = await box.read('key');
                Get.snackbar('Data', value ?? 'No data found', snackPosition: SnackPosition.BOTTOM);
              },
              child: Text('Read Data'),
            ),
            SizedBox(height: 20),
            ElevatedButton(
              onPressed: () async {
                // 删除数据
                await box.remove('key');
                SnackBar(content: Text('Data removed')).show(context);
              },
              child: Text('Remove Data'),
            ),
          ],
        ),
      ),
    );
  }
}

在这个示例中,我们展示了如何使用GetStorage来保存、读取和删除一个简单的字符串值。GetStorage内部使用shared_preferences来持久化数据,这意味着数据存储在设备的本地存储中。

注意:如果你需要更高的安全性,比如加密存储的数据,你可能需要结合使用像encrypt这样的加密库来手动加密和解密数据,然后再使用GetStorageshared_preferences来存储加密后的数据。get_storage本身不提供内置的加密功能。

回到顶部