如何在Google drive和Dropbox上为flutter应用程序备份用户数据



如何备份用户google drive帐户和dropbox上的数据,并在不同设备上重新安装或安装应用程序后进行恢复?

我见过允许用户通过谷歌驱动器登录并定期备份到用户云的应用程序。

用户数据包含图像文件、Sql数据库和共享首选项。

我不想使用firebase云,因为数据是由用户自己访问的,而不是由其他用户访问的,如果数据很大,成本会很高。有没有可用的套餐可以做到这一点?或者教程,否则如何在颤振中实现这一点?

这是一种非常简单的谷歌搜索方法,但我还没有处理过Drop box

注意:这里有一个简单的例子来说明方法

遵循以下步骤:

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项目:

您可以选中此项来创建项目,并启用Auth Google

5-启用Google Drive API:

您还可以访问谷歌云控制台,查找搜索栏并搜索"Google Drive API"。单击"启用"。

6-将文件上传到Google Drive:

使用http包创建一个新文件GoogleAuthClient.dart。GoogleAuthClient类基于BaseClint,它已经支持所有标准的HTTP请求:POST、GET等。我们将另一个Client封装在里面,并实现send函数,稍后我们将在其中注入身份验证头。

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));
}
}

现在,我们使用上面用户帐户的auth头创建一个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");