开发Flutter文件管理器的一些坑

最近在写Flutter项目时遇到了一个文件管理器功能,做一下记录,整理一些小坑。

1.引入的第三方库external_path

资源地址:https://pub.dev/packages/external_path
external_path: ^1.0.3 #获取文件夹路径

获取Android根目录路径,由于path是一个String数组,一般情况下取第0位就是root path

  static Future<Directory> getAndroidRootPath() async {
    var path = await ExternalPath.getExternalStorageDirectories();
    Directory directory = Directory(path[0]);
    return directory;
  }

2.将根目录path转为Directory,然后进行遍历。recursive代表是否递归遍历路径下所有子路径,默认是false,

建议不要使用true,如果递归根目录耗时太长

List<FileSystemEntity> list = directory.listSync(recursive: false);

3.可以根据FileSystemEntity的静态方法判断path是File还是Directory,之后自行处理对应逻辑

FileSystemEntity.isDirectorySync(path)
FileSystemEntity.isFileSync(path)

4.根据path获取扩展名,注意获取到的扩展名是包含’.‘的,例如’.jpg’

import 'package:path/path.dart' as p; 导包
///获取文件扩展名
  static String getFileExtension(String path) {
    return p.extension(path);
  }

记录flutter文件管理的一些小坑,问题不大~

1.遍历Directory,命名文件夹下有图片,但是directory.listSync()却返回空数组

List<FileSystemEntity> list = directory.listSync();返回值是空数组

这个问题跟Android13 的权限管理有关,需要再AndroidManifest中加入,并且授权App访问图片权限

<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />

2.创建Directory或者file失败报错,OS Error: Read-only file system, errno = 30,
依然是权限问题,需要动态获取权限

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
//注意Android13要加上下边这一行
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE"/>

在flutter代码中动态获取权限

///请求权限
Future<bool> requestPermission() async {
    bool isMore13 = await SystemUtil.isMoreAndroid13();
    bool storagePermission = isMore13 ? true : await Permission.storage.isGranted;
    bool manageExternal = isMore13 ? await Permission.manageExternalStorage.isGranted : true;

    if (!storagePermission) {
      storagePermission = await Permission.storage.request().isGranted;
    }

    if (!manageExternal) {
      manageExternal = await Permission.manageExternalStorage.request().isGranted;
    }

    bool isPermissionGranted = storagePermission && manageExternal;

    if (isPermissionGranted) {
      return true;
    } else {
      return false;
    }
  }

暂时先写这么多,有错误的地方欢迎大家指正~~

最后

如果想要成为架构师或想突破20~30K薪资范畴,那就不要局限在编码,业务,要会选型、扩展,提升编程思维。此外,良好的职业规划也很重要,学习的习惯很重要,但是最重要的还是要能持之以恒,任何不能坚持落实的计划都是空谈。

如果你没有方向,这里给大家分享一套由阿里高级架构师编写的《Android八大模块进阶笔记》,帮大家将杂乱、零散、碎片化的知识进行体系化的整理,让大家系统而高效地掌握Android开发的各个知识点。
img
相对于我们平时看的碎片化内容,这份笔记的知识点更系统化,更容易理解和记忆,是严格按照知识体系编排的。

欢迎大家一键三连支持,若需要文中资料,直接扫描文末CSDN官方认证微信卡片免费领取↓↓↓

PS:群里还设有ChatGPT机器人,可以解答大家在工作上或者是技术上的问题
图片

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Flutter开发文档是针对Flutter框架的官方文档,提供了全面的开发指南和参考资料。它包括了Flutter框架的概述,安装和配置指南,以及各种用于构建高性能跨平台应用的工具和资源。 首先,Flutter开发文档介绍了Flutter框架的基本概念和原理,包括如何使用Widget构建用户界面以及如何处理用户输入和交互。开发者可以通过这些指南来了解Flutter的整体架构和核心特性,从而更好地理解和利用Flutter进行应用开发。 其次,Flutter开发文档提供了丰富的API参考和使用示例,使开发者能够快速上手和深入了解各种Flutter组件和功能。开发者可以通过文档中的代码示例和详细说明来学习如何使用不同的Widget和布局进行界面设计,以及如何调用Flutter提供的各种API实现更复杂的业务逻辑。 此外,Flutter开发文档还详细介绍了Flutter开发工具和调试技巧,包括如何使用命令行工具进行项目管理和发布,如何使用集成开发环境(IDE)进行开发和调试,以及如何使用Flutter的调试工具来定位和解决应用中的问题。这些指南和建议可以帮助开发者提高开发效率,减少错误和调试时间。 总之,Flutter开发文档是学习和使用Flutter进行应用开发的重要参考资料。它提供了全面的开发指南和参考资料,帮助开发者快速上手和精通Flutter开发,实现高性能、跨平台的应用程序。对于初学者来说,阅读Flutter开发文档是入门的首要步骤,对于有经验的开发者来说,它是进一步提升技能和应用开发水平的宝贵资源。 ### 回答2: Flutter是Google推出的一种用于构建跨平台移动应用的开源框架。它具有快速开发、高效性能和灵活可扩展等特点。Flutter开发文档非常详细全面,为开发者提供了丰富的资源和指导。 首先,Flutter开发文档提供了完整的安装指南,让开发者能够快速搭建开发环境,并且支持多个操作系统,包括Windows、MacOS和Linux等。开发者只需按照文档中的步骤进行配置,即可开始使用Flutter进行开发。 其次,Flutter开发文档提供了丰富的基础知识和概念介绍,帮助开发者了解Flutter的整体架构和工作原理。文档中详细介绍了Flutter的Widget系统,以及如何使用Widget来构建用户界面。此外,文档还提供了许多关于布局、动画和主题等方面的教程和示例代码,帮助开发者快速上手。 另外,Flutter开发文档还包含了大量的API文档,涵盖了Flutter框架的核心功能和各种组件的使用方法。开发者可以根据需要查阅相应的API文档,了解每个组件的属性、方法和事件等详情。同时,文档还提供了一系列示例代码,让开发者能够更好地理解和运用这些组件。 最后,Flutter开发文档还提供了丰富的实用资源和工具,包括开发工具的介绍和配置、Flutter包管理和依赖管理等。开发者可以通过文档中提供的链接和教程,快速了解和使用这些工具,提高开发效率。 总的来说,Flutter开发文档对于开发者来说是非常宝贵的资源,通过详细的介绍和实用的示例,帮助开发者快速入门和深入理解Flutter框架,从而能够更高效地开发出跨平台的移动应用。 ### 回答3: Flutter开发文档是Flutter官方提供的一份详尽的技术文档,用于指导Flutter开发者学习和使用Flutter框架。文档详细地介绍了Flutter的各个方面,包括安装配置、基本概念、核心组件、布局系统、用户界面、动画、手势、插件等内容。 首先,文档提供了Flutter的安装配置指南,指导开发者如何搭建开发环境,并使用Flutter SDK进行应用开发。同时,文档还介绍了Flutter的基本概念和工作原理,帮助开发者理解Flutter的核心特性和优势。 其次,文档详细介绍了Flutter的核心组件,包括Widget、State、BuildContext等,开发者可以了解到如何使用这些组件构建复杂的用户界面。同时,文档还深入介绍了Flutter的布局系统,包括Row、Column、Stack等布局组件的用法,并提供了示例代码和案例说明。 此外,文档还介绍了Flutter的用户界面设计,包括样式、字体、图片等的使用方法,以及界面的响应事件和动画效果的实现。开发者可以通过文档了解到如何构建出令人满意的用户界面和用户交互效果。 最后,文档还提供了Flutter插件的开发方法和使用指南,通过插件可以扩展Flutter的功能和接入原生平台的特性,帮助开发者实现更复杂的应用需求。 总而言之,Flutter开发文档是一份权威且详细的技术指南,对于Flutter开发者来说是不可或缺的参考材料。通过学习和使用文档中的知识,开发者可以更加高效地进行Flutter应用的开发和调试。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值