Flutter GitHub存储管理插件github_storage的使用
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
更多关于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,
),
);
}
}
}
}
注意事项:
- OAuth 配置:确保你已经配置了 GitHub OAuth 客户端 ID、客户端密钥和访问令牌。这些令牌可以通过 GitHub 的开发者设置获取。
- 文件选择器:上面的代码使用了
file_picker
插件来选择文件。你需要在pubspec.yaml
文件中添加file_picker
依赖,并运行flutter pub get
。 - 错误处理:上传文件时可能会遇到各种错误,如网络问题、权限问题等,务必做好错误处理。
依赖项:
除了 github_storage
,你还需要添加 file_picker
依赖:
dependencies:
file_picker: ^最新版本号 # 替换为实际最新版本号
确保你已经替换了所有占位符(如 YOUR_CLIENT_ID
、your-repo-owner
等)为实际的值。
这个示例展示了如何使用 github_storage
插件上传文件到 GitHub 存储。如果你需要下载文件,可以参考插件的文档和 API 来实现相应的功能。