Flutter GitHub存储管理插件github_storage的使用

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

Flutter GitHub存储管理插件github_storage的使用

这个包提供了一种方便的方法,可以直接在你的GitHub仓库中持久化键值对。它使用了(https://pub.dev/packages/github)的实现。感谢(https://github.com/SpinlockLabs)。

特性

  • 安全存储:利用GitHub的密钥管理功能进行数据的安全存储,建议使用私有仓库。
  • 易于使用:简单的API用于存储和检索数据。
  • 集成到Dart:可以在你的Dart项目中无缝工作。

开始使用

pubspec.yaml文件中添加依赖:

dependencies:
  github_storage: ^any

使用示例

注册你的GitHub账户

final git = GithubStorage(
      username: "this is yours",
      personalAccessToken: "yout token",
      repository: "your repo");

创建文件和文件夹(如果它们还不存在)

await git.createBox(name: "user", folder: "data");

创建GithubBox对象

GithubBox userBox = git.box(name: "user", folder: "data");

存储、获取和删除数据

// 存储数据
await userBox.put("isDarkTheme", true);

// 删除数据
await userBox.remove("user");

// 获取数据
bool isDark = await userBox.get("isDark");

或者保存一个对象

Map user = {
    "user": "jack",
    "no": 10,
    "color": [
      "red",
      "blue",
    ],
    "planet": {"earth": "moon"}
  };

await userBox.put("jack", user);

完整示例

import 'package:github_storage/github_storage.dart';
import 'package:github_storage/src/github_box.dart';

void main() async {
  // 初始化GithubStorage
  final git = GithubStorage(
      username: "this is yours",
      personalAccessToken: "yout token",
      repository: "your repo");

  // 创建文件夹和文件(如果不存在)
  await git.createBox(name: "user", folder: "data");
  await git.createBox(name: "setting", folder: "setting");

  // 创建GithubBox对象
  GithubBox userBox = git.box(name: "user", folder: "data");
  GithubBox settingBox = git.box(name: "setting", folder: "setting");

  // 存储数据
  await userBox.put("flutter", {"version": 1, "isDart": true});
  await settingBox.put("isDarkTheme", true);

  // 获取数据
  bool isDark = await settingBox.get("isDark");
  print(isDark);

  // 删除数据
  await userBox.remove("jack");

  // 获取原始数据
  Map setting = await settingBox.getRawData();
  print(setting.toString());

  // 保存复杂对象
  Map user = {
    "user": "jack",
    "no": 10,
    "color": [
      "red",
      "blue",
    ],
    "planet": {"earth": "moon"}
  };

  await settingBox.put("jack", user);
}

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

1 回复

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


当然,下面是一个关于如何使用 github_storage 插件在 Flutter 应用中进行 GitHub 存储管理的代码示例。这个插件通常用于与 GitHub 的存储 API 交互,例如上传和下载文件。请注意,实际使用中你需要确保已经正确配置了 GitHub OAuth 令牌,并且拥有相应的权限。

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

dependencies:
  flutter:
    sdk: flutter
  github_storage: ^最新版本号  # 替换为实际最新版本号

然后,运行 flutter pub get 以获取依赖项。

接下来,编写一个 Flutter 应用来演示如何使用 github_storage 插件。以下是一个简单的示例,展示如何上传文件到 GitHub 存储:

import 'package:flutter/material.dart';
import 'package:github_storage/github_storage.dart';
import 'dart:io';

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

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  final GitHubStorage _githubStorage = GitHubStorage(
    clientId: 'YOUR_CLIENT_ID', // 替换为你的 GitHub OAuth 客户端 ID
    clientSecret: 'YOUR_CLIENT_SECRET', // 替换为你的 GitHub OAuth 客户端密钥
    accessToken: 'YOUR_ACCESS_TOKEN', // 替换为你的 GitHub OAuth 访问令牌
  );

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('GitHub Storage Example'),
        ),
        body: Center(
          child: ElevatedButton(
            onPressed: _uploadFile,
            child: Text('Upload File'),
          ),
        ),
      ),
    );
  }

  Future<void> _uploadFile() async {
    // 选择一个文件
    FilePickerResult? result = await FilePicker.platform.pickFiles(
      type: FileType.any,
    );

    if (result != null) {
      File file = File(result.files.single.path!);
      String fileName = result.files.single.name;
      String repoOwner = 'your-repo-owner'; // 替换为你的仓库拥有者
      String repoName = 'your-repo-name'; // 替换为你的仓库名称
      String path = 'path/to/upload'; // 替换为你希望上传到的路径

      try {
        // 上传文件
        await _githubStorage.uploadFile(
          repoOwner: repoOwner,
          repoName: repoName,
          path: path,
          fileName: fileName,
          file: file,
          message: 'Uploading file via Flutter app', // 提交信息
        );

        ScaffoldMessenger.of(context).showSnackBar(
          SnackBar(
            content: Text('File uploaded successfully!'),
          ),
        );
      } catch (e) {
        print('Error uploading file: $e');
        ScaffoldMessenger.of(context).showSnackBar(
          SnackBar(
            content: Text('Failed to upload file.'),
            backgroundColor: Colors.red,
          ),
        );
      }
    }
  }
}

注意事项:

  1. OAuth 配置:确保你已经配置了 GitHub OAuth 客户端 ID、客户端密钥和访问令牌。这些令牌可以通过 GitHub 的开发者设置获取。
  2. 文件选择器:上面的代码使用了 file_picker 插件来选择文件。你需要在 pubspec.yaml 文件中添加 file_picker 依赖,并运行 flutter pub get
  3. 错误处理:上传文件时可能会遇到各种错误,如网络问题、权限问题等,务必做好错误处理。

依赖项:

除了 github_storage,你还需要添加 file_picker 依赖:

dependencies:
  file_picker: ^最新版本号  # 替换为实际最新版本号

确保你已经替换了所有占位符(如 YOUR_CLIENT_IDyour-repo-owner 等)为实际的值。

这个示例展示了如何使用 github_storage 插件上传文件到 GitHub 存储。如果你需要下载文件,可以参考插件的文档和 API 来实现相应的功能。

回到顶部