这是一种很简单的google方式,但是我还没有处理过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-Google 登录
打开 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-将文件上传到 Google 云端硬盘:
使用http 包创建一个新文件GoogleAuthClient.dart。 GoogleAuthClient 类基于BaseCleint,它已经支持所有标准的HTTP 请求:POST、GET 等。我们在里面包装另一个Client 并实现发送函数,稍后我们将在其中注入身份验证头。
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));
}
}
现在我们使用上述用户帐户的身份验证标头创建一个 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");