Flutter数据存储管理插件easy_depot的使用

Flutter数据存储管理插件easy_depot的使用

depot

简单带加密选项的共享偏好设置。

示例代码

EasyDepot depot = EasyDepot();
depot.setString("testKey", "testValue"); // 设置值
String? value = await depot.getString("testKey"); // 获取值
depot.setSecString("testSecureKey", "testSecureValue"); // 设置加密值
String? secureValue = await depot.getString("testSecureKey"); // 获取解密值

许可证

版权所有 © 2023 Ferid Cafer

根据Apache许可证2.0版(“许可证”)授权; 除非符合许可证,否则不得使用此文件。 您可以从以下地址获得许可证副本:

除非适用法律要求或以书面形式同意,否则根据许可证分发的软件按"原样"分发,不附带任何明示或暗示的保证,包括但不限于适销性、特定用途适用性和非侵权性的担保。有关许可证具体语言,请参阅许可证条款和限制。


完整示例Demo

接下来我们来创建一个完整的示例Demo,展示如何使用EasyDepot插件进行数据存储和加密操作。

项目结构

假设我们的项目结构如下:

lib/
├── main.dart
└── easy_depot_example.dart

main.dart 文件

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

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'EasyDepot Demo',
      home: EasyDepotExample(),
    );
  }
}

easy_depot_example.dart 文件

import 'package:flutter/material.dart';
import 'package:easy_depot/easy_depot.dart'; // 引入EasyDepot插件

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

class _EasyDepotExampleState extends State<EasyDepotExample> {
  EasyDepot _depot = EasyDepot();
  String _value = '';
  String _secureValue = '';

  [@override](/user/override)
  void initState() {
    super.initState();
    // 初始化时获取数据
    _getValue();
    _getSecureValue();
  }

  Future<void> _setValue() async {
    await _depot.setString("testKey", "Hello EasyDepot");
    setState(() {
      _value = '已设置值为: Hello EasyDepot';
    });
  }

  Future<void> _getValue() async {
    String? value = await _depot.getString("testKey");
    setState(() {
      _value = value ?? '未找到值';
    });
  }

  Future<void> _setSecureValue() async {
    await _depot.setSecString("testSecureKey", "This is a secure message");
    setState(() {
      _secureValue = '已设置加密值';
    });
  }

  Future<void> _getSecureValue() async {
    String? secureValue = await _depot.getString("testSecureKey");
    setState(() {
      _secureValue = secureValue ?? '未找到加密值';
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('EasyDepot 示例'),
      ),
      body: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            ElevatedButton(
              onPressed: _setValue,
              child: Text('设置普通值'),
            ),
            SizedBox(height: 16),
            Text(_value),
            SizedBox(height: 16),
            ElevatedButton(
              onPressed: _setSecureValue,
              child: Text('设置加密值'),
            ),
            SizedBox(height: 16),
            Text(_secureValue),
            SizedBox(height: 16),
            ElevatedButton(
              onPressed: _getValue,
              child: Text('获取普通值'),
            ),
            SizedBox(height: 16),
            ElevatedButton(
              onPressed: _getSecureValue,
              child: Text('获取加密值'),
            ),
          ],
        ),
      ),
    );
  }
}

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

1 回复

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


当然,下面是一个关于如何在Flutter项目中使用easy_depot插件进行数据存储管理的示例代码。easy_depot是一个用于简化Flutter中的数据存储管理的插件,它支持多种存储方式,如内存存储、文件存储和SQLite数据库存储。

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

dependencies:
  flutter:
    sdk: flutter
  easy_depot: ^latest_version  # 请替换为实际的最新版本号

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

接下来,是一个简单的示例,展示如何使用easy_depot进行数据存储和检索。

1. 初始化存储

在你的主应用文件(如main.dart)中,初始化EasyDepot实例:

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

void main() {
  // 初始化存储实例,这里使用内存存储作为示例
  final depot = EasyDepot.memory();

  runApp(MyApp(depot: depot));
}

class MyApp extends StatelessWidget {
  final EasyDepot depot;

  MyApp({required this.depot});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter EasyDepot Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(depot: depot),
    );
  }
}

2. 数据存储和检索

在你的主页面(如my_home_page.dart)中,实现数据存储和检索的逻辑:

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

class MyHomePage extends StatefulWidget {
  final EasyDepot depot;

  MyHomePage({required this.depot});

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

class _MyHomePageState extends State<MyHomePage> {
  final String key = 'example_key';
  String? storedValue;

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

    // 从存储中检索数据
    widget.depot.get<String>(key).then((value) {
      setState(() {
        storedValue = value;
      });
    });
  }

  void _storeData() {
    // 存储数据
    widget.depot.set(key, 'Hello, EasyDepot!');

    // 更新UI
    setState(() {
      storedValue = 'Hello, EasyDepot!';
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('EasyDepot Demo'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text(
              'Stored Value: ${storedValue ?? 'N/A'}',
              style: TextStyle(fontSize: 20),
            ),
            SizedBox(height: 20),
            ElevatedButton(
              onPressed: _storeData,
              child: Text('Store Data'),
            ),
          ],
        ),
      ),
    );
  }
}

3. 使用其他存储方式

easy_depot还支持其他存储方式,如文件存储和SQLite数据库存储。你可以根据需要初始化不同的存储实例。例如,使用文件存储:

final depot = EasyDepot.file(directory: 'path/to/your/directory');

或者使用SQLite数据库存储:

final depot = EasyDepot.sqlite(databasePath: 'path/to/your/database.db');

总结

上述代码展示了如何使用easy_depot插件在Flutter应用中管理数据存储。你可以根据需求选择不同的存储方式,并使用简单的API进行数据存取操作。请确保在实际项目中替换为最新的easy_depot版本,并参考官方文档获取更多高级用法和配置选项。

回到顶部