Flutter:如何从谷歌驱动器API中获取特定的扩展文件作为列表?

um6iljoc  于 2023-06-24  发布在  Flutter
关注(0)|答案(1)|浏览(145)

我让用户保存一个备份文件到他/她的谷歌驱动器,并将其保存到应用程序的文件夹。我还得到了一个备份文件的应用程序列表,直到这里一切正常,但如果用户上传任何文件到该文件夹从应用程序外,例如图像,所以如果用户点击按钮恢复,应用程序运行错误,我只想检索.db文件?

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

brjng4g31#

您需要将代码更改为:

Future<Iterable<drive.File>> _filesInFolder(drive.DriveApi driveApi) async {
    const dbExtension = '.db';
    var res = await driveApi.files.list(
      spaces: 'drive',
      q: "'$folderId' in parents and trashed=false",
    );
    final file = res.files!.takeWhile(
      (element) => element.name!.endsWith(dbExtension),
    );

    if (file.isEmpty) {
      return [];
    } else {
      return file;
    }
  }

我不知道你是怎么称呼它的,因为你没有给予我们一个足够的代码,但我会想象你正在添加它到一个列表,所以你应该添加也:

List<drive.File> _files = [];

然后通过调用上面的函数获取这些文件:

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

然后你可以通过FutureBuilder widget调用_fetchFiles

相关问题