You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter中如何让用户选择备份文件的保存/创建位置

解决方案

要实现让用户自行选择备份文件的保存位置,你可以借助file_picker这个Flutter包调用系统文件选择器,让用户指定目标目录。以下是具体修改步骤:

1. 添加依赖

在pubspec.yaml的dependencies节点中加入:

file_picker: ^6.1.1

执行flutter pub get完成依赖安装。

2. 修改备份函数

替换原有的backupDB函数为以下代码:

backupDB() async {
  // 申请存储权限
  var status = await Permission.manageExternalStorage.status;
  if (!status.isGranted) {
    await Permission.manageExternalStorage.request();
  }
  var status1 = await Permission.storage.status;
  if (!status1.isGranted) {
    await Permission.storage.request();
  }

  try {
    // 唤起系统目录选择界面
    String? selectedDirectory = await FilePicker.platform.getDirectoryPath();
    if (selectedDirectory == null) {
      // 用户取消选择
      print('用户取消选择保存目录');
      return;
    }

    // 源数据库文件路径
    File ourDBFile = File('/data/user/0/com.example.demo_sql_full/databases/Data.db');
    // 拼接目标文件路径
    String targetPath = '$selectedDirectory/Data.db';

    // 执行文件复制
    await ourDBFile.copy(targetPath);
    print('备份完成,文件已保存至: $targetPath');
  } catch (e) {
    print('备份失败: ${e.toString()}');
  }
}

关键说明

  • FilePicker.platform.getDirectoryPath()会唤起系统原生的文件夹选择界面,支持用户自由选择备份存储位置;
  • 增加了用户取消选择的判断逻辑,避免后续代码执行报错;
  • 直接用用户选中的目录拼接目标文件名,确保备份文件存到指定位置;
  • 针对Android 13及以上版本,manageExternalStorage权限可根据目标SDK版本调整,部分场景下无需申请该权限。

内容的提问来源于stack exchange,提问作者Dat Minh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 21:13:15