dart 获取创建的文件ID - Google Drive API Flutter

vuktfyat  于 2023-06-19  发布在  Go
关注(0)|答案(1)|浏览(178)

昨天我实现了使用Flutter应用程序将数据备份到Google Drive的功能。一切工作正常,除了我必须获得上传文件的ID的部分。
这是上传给定文件的函数,位于此路径

Future<dynamic> gDriveFileCreator(googledrive.DriveApi drive,
      googledrive.File fileToUpload, String path) async {
    File file = File(path);
    fileToUpload.name = p.basename(file.absolute.path);
    var response = await drive.files.create(
      fileToUpload,
      uploadMedia: googledrive.Media(file.openRead(), file.lengthSync()),
    );
    return response;
  }

这就是我如何触发这个函数:

responsePdfUpload =
              await gDriveFileCreator(drive, fileToUpload, pdfPath!);

现在,它就像一个魅力。我的下一个要求是获取ID并将其存储在本地DB中。但是,当我尝试通过执行以下操作从responsePdfUpload获取ID时:responsePdfUpload.getId(),它抛出异常,声明“Class 'File' has no instance method 'getId'”。
知道我哪里做错了吗或者有没有其他方法可以从Google Drive返回的文件中获取ID?据我所知,同样的方法一直在工作,直到昨天没有任何问题。
我也调试了,我确实在响应中得到了一个id。

有人能帮帮我吗

dluptydi

dluptydi1#

List<drive.File> _files = [];

  Future<void> _fetchFiles() async {
    print('fetchFiles called');
    try {
      var files = await _filesInFolder(driveFile);
      _files = files;
    } catch (error) {
      print("Error fetching files: $error");
    }
  }

  Future<List<drive.File>> _filesInFolder(drive.DriveApi driveApi) async {
    print('folder id:::::::::: $folderId');
    var res = await driveApi.files.list(
      spaces: 'drive',
      q: "'$folderId' in parents and trashed=false",
    );
    return res.files ?? [];
  }

// then 

          body: FutureBuilder(
                  future: _fetchFiles(),
                  builder: (context, snapshot) {
                    if (snapshot.connectionState == ConnectionState.done) {
                      return ListView.builder(
                        itemCount: _files.length,
                        itemBuilder: (context, index) {
                          var file = _files[index];
                          return Card(
                            child: ListTile(
                              title: Center(child: Text(file.name ?? '')),
                              subtitle: Text(file.id ?? ''),
                              trailing: ElevatedButton(
                                onPressed: () {
                                  print(file.id);
                                },
                                child: const Text('Print File ID'),
                              ),
                            ),
                          );
                        },
                      );
                    } else if (snapshot.hasError) {
                      return Text('Error: ${snapshot.error}');
                    } else {
                      return const Center(child: CircularProgressIndicator());
                    }
                  },
                )

相关问题