Flutter本地存储插件get_storage的使用

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

Flutter本地存储插件get_storage的使用

get_storage 是一个快速、轻量级且同步的键值对内存存储插件,它在每次操作时将数据备份到磁盘。该插件完全用Dart编写,并与Flutter的Get框架轻松集成。它支持Android、iOS、Web、Mac、Linux、Fuchsia和Windows平台,可以存储String、int、double、Map和List类型的数据。

添加依赖

pubspec.yaml 文件中添加 get_storage 依赖:

dependencies:
  get_storage:

然后通过命令行安装包:

flutter packages get

导入插件

在你的 Dart 代码中导入 get_storage

import 'package:get_storage/get_storage.dart';

初始化存储

在应用启动时初始化存储驱动:

void main() async {
  await GetStorage.init();
  runApp(MyApp());
}

如果你想初始化特定名称的容器,可以这样做:

await GetStorage.init('MyStorage');

使用 GetStorage

创建实例

你可以通过创建 GetStorage 实例来使用它:

final box = GetStorage();

或者直接使用静态方法:

GetStorage().read('key');

写入数据

使用 write 方法写入数据:

box.write('quote', 'GetX is the best');

读取数据

使用 read 方法读取数据:

print(box.read('quote'));
// 输出: GetX is the best

删除数据

使用 remove 方法删除特定键的数据:

box.remove('quote');

监听变化

你可以监听整个盒子的变化:

Function? disposeListen;
disposeListen = box.listen(() {
  print('box changed');
});

确保在不再需要时取消订阅:

disposeListen?.call();

你也可以监听特定键的变化:

box.listenKey('key', (value) {
  print('new key is $value');
});

清空容器

使用 erase 方法清空整个容器:

box.erase();

多个容器

如果你想创建多个容器,只需给它们不同的名字:

GetStorage g = GetStorage('MyStorage');

示例代码

以下是一个完整的示例代码,展示了如何使用 get_storage 来实现主题切换功能:

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

void main() async {
  await GetStorage.init();
  runApp(App());
}

class Controller extends GetxController {
  final box = GetStorage();
  bool get isDark => box.read('darkmode') ?? false;
  ThemeData get theme => isDark ? ThemeData.dark() : ThemeData.light();
  void changeTheme(bool val) => box.write('darkmode', val);
}

class App extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    final controller = Get.put(Controller());
    return GetMaterialApp(
      theme: controller.theme,
      home: Scaffold(
        appBar: AppBar(title: Text("Get Storage")),
        body: Center(
          child: SwitchListTile(
            value: controller.isDark,
            title: Text("Touch to change ThemeMode"),
            onChanged: controller.changeTheme,
          ),
        ),
      ),
    );
  }
}

这个示例展示了如何使用 get_storage 来存储和读取主题模式的状态,并根据用户的选择动态切换主题。

总结

get_storage 是一个非常强大且易于使用的本地存储插件,适用于需要快速、轻量级键值对存储的场景。它不仅可以用于简单的数据存储,还可以结合 GetX 框架实现状态管理等功能。希望这篇指南能帮助你更好地理解和使用 get_storage 插件。


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

1 回复

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


当然,下面是一个关于如何在Flutter项目中使用get_storage插件进行本地存储的示例代码。get_storage是一个非常流行的Flutter插件,用于在本地存储键值对数据。

步骤 1: 添加依赖

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

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

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

步骤 2: 初始化GetStorage

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

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

void main() async {
  // 初始化GetStorage
  final box = GetStorage();
  await box.init();

  runApp(MyApp());
}

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

步骤 3: 使用GetStorage进行读写操作

下面是一个简单的例子,展示如何在Flutter中使用GetStorage进行读写操作。

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

class HomePage 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', 'value');
                SnackBar(content: Text('Data written to storage')).show(context);
              },
              child: Text('Write Data'),
            ),
            SizedBox(height: 20),
            ElevatedButton(
              onPressed: () async {
                // 读数据
                String? value = await box.read('key');
                if (value != null) {
                  SnackBar(content: Text('Data read from storage: $value')).show(context);
                } else {
                  SnackBar(content: Text('No data found')).show(context);
                }
              },
              child: Text('Read Data'),
            ),
            SizedBox(height: 20),
            ElevatedButton(
              onPressed: () async {
                // 删除数据
                await box.remove('key');
                SnackBar(content: Text('Data removed from storage')).show(context);
              },
              child: Text('Remove Data'),
            ),
          ],
        ),
      ),
    );
  }
}

解释

  1. 初始化GetStorage: 在main.dart中,我们使用await box.init();来初始化GetStorage
  2. 获取GetStorage实例: 在需要使用GetStorage的类中,我们通过Get.find<GetStorage>()来获取GetStorage实例。
  3. 写数据: 使用await box.write('key', 'value');将数据写入存储。
  4. 读数据: 使用String? value = await box.read('key');从存储中读取数据。
  5. 删除数据: 使用await box.remove('key');从存储中删除数据。

这样,你就可以在Flutter应用中使用get_storage插件进行本地存储操作了。记得根据实际需求调整键和值。

回到顶部