gpt4 book ai didi

android - 如何在 Google Drive 和 Dropbox 上为 Flutter 应用备份用户数据?

转载 作者:行者123 更新时间:2023-12-03 23:42:49 25 4
gpt4 key购买 nike

如何备份用户谷歌驱动器帐户和保管箱上的数据并在重新安装或在不同设备上安装应用程序后恢复它们?
我见过允许用户通过谷歌驱动器登录并定期备份到用户云的应用程序。
用户数据包含图像文件、Sql 数据库和共享首选项。
我不想使用 firebase 云,因为数据是由用户自己而不是其他用户访问的,如果数据很大,成本会很高。有没有可用的软件包可以做到这一点?或教程,否则如何在 flutter 中实现这一目标?

最佳答案

这是一种非常简单的google方式,但我没有处理过Drop box

Note : Here is a simple example to illustrate the method


按着这些次序:
1-添加依赖:
dependencies:
googleapis: ^0.56.1
google_sign_in: ^4.5.6
2-添加这些进口:
import 'package:googleapis/drive/v3.dart' as drive;
import 'package:google_sign_in/google_sign_in.dart' as signIn;
3-谷歌登录
打开 main.dart,找到 _incrementCounter()函数,当用户点击加号按钮时调用,编辑如下:
Future<void> _incrementCounter() async {
setState(() {
_counter++;
});

final googleSignIn = signIn.GoogleSignIn.standard(scopes: [drive.DriveApi.DriveScope]);
final signIn.GoogleSignInAccount account = await googleSignIn.signIn();
print("User account $account");
}
4-创建一个新的 Firebase 项目:
您可以查看 this创建项目, 启用 Auth Google .
5-启用 Google Drive API:
您也可以前往 Google Cloud Console , 寻找搜索栏并搜索“Google Drive API”。单击“启用”。
6-上传文件到谷歌驱动器:
创建一个新文件, GoogleAuthClient.dart , 使用 http包裹。 GoogleAuthClient 类基于 BaseCleint ,它已经支持所有标准的 HTTP 请求:POST、GET 等。我们包装另一个 Client内部并实现发送函数,稍后我们将在其中注入(inject)身份验证 header 。
import 'package:http/http.dart' as http;

class GoogleAuthClient extends http.BaseClient {
final Map<String, String> _headers;

final http.Client _client = new http.Client();

GoogleAuthClient(this._headers);

Future<http.StreamedResponse> send(http.BaseRequest request) {
return _client.send(request..headers.addAll(_headers));
}
}
现在我们使用上述用户帐户的身份验证 header 创建一个 GoogleAuthClient,然后使用它创建一个 Google Drive API 对象 DriveApi。
final authHeaders = await account.authHeaders;
final authenticateClient = GoogleAuthClient(authHeaders);
final driveApi = drive.DriveApi(authenticateClient);
最后 ,让我们上传一个文件:
final Stream<List<int>> mediaStream =
Future.value([104, 105]).asStream().asBroadcastStream();
var media = new drive.Media(mediaStream, 2);
var driveFile = new drive.File();
driveFile.name = "hello_world.txt";
final result = await driveApi.files.create(driveFile, uploadMedia: media);
print("Upload result: $result");

关于android - 如何在 Google Drive 和 Dropbox 上为 Flutter 应用备份用户数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64727260/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com