Flutter文件夹组织
简介
文件夹组织有助于优化应用程序的性能。随着Android项目规模的扩大,适当的文件夹组织对于避免bug和保持代码的可维护性是必要的。尽管flutter文档没有列出文件夹组织的具体标准,但程序员应按照特定的模式组织文件和文件夹。
由于flutter文件夹组织没有规则,本文只是解释了flutter项目中组织文件和文件夹的有效方法之一。
目录
- Flutter项目中的默认文件和文件夹。
- 文件夹组织。
- 保持适当的文件夹结构的好处。
- 结论
默认的文件夹和文件
当我们用flutter create appname 命令初始化任何flutter应用程序时,flutter工具会创建一个带有默认文件和文件夹的应用程序模板,如图所示。

Android:Android文件夹包含在Android操作系统上运行应用程序所需的文件和文件夹。这些文件和文件夹是在创建flutter项目时自动生成的。建议这些文件夹和文件保持原样。
android文件夹的主要子文件夹是res 文件夹和AndroidManifest.xml file 。res文件夹包含应用程序所需的非可编程资源,如图标、图像和字体,而AndroidManifest.xml file 包含应用程序SDK所需的信息。

iOS:与Android文件夹一样,该文件夹包含应用程序在iOS平台上运行dart代码所需的文件。ios 文件夹下的主要文件是Assets.xcassests folder ,和info.plist file 。Assets.xcassests folder 就像Android中的res 文件夹。它包含应用程序所需的非可编程资源。
info.plist file 类似于 "AndroidManifest.xml文件"。它存储了应用程序的SDK所需的信息。如果要做任何修改以使应用程序适用于IOS平台,应该在这个文件夹中完成。

.idea:文件夹将包含与你用来构建应用程序的代码编辑器有关的设置。这些设置是特定于当前项目的。然而,你可以指定默认的项目设置,所有创建的应用程序都会被描绘出来。
Lib:这是项目中最重要的文件夹,用于编写大部分dart 代码。默认情况下,lib 文件夹包含main.dart 文件,它是应用程序的入口点。不过,这个配置是可以改变的。
.gitignore: gitignore 文件存储文件从IDE中隐藏,当项目被上传到版本控制平台(如GitHub )时,需要忽略它。
.metadata:和.gitignore ,这个文件也是隐藏的。它包含flutter工具所需的元数据,以跟踪flutter项目。
.packages:由于flutter是一个框架,而且它带有许多包和库。.packages 文件保存了项目中使用的每个包和库的路径。程序员不应该对这个文件进行修改。
pubspecam.lock:这个文件包含flutter应用程序中使用的每个依赖关系和包的版本。
pubspec.yaml:这是我们用来添加元数据和特定于我们应用程序的配置的文件。在这个文件的帮助下,我们可以配置图像资产、字体和应用程序版本等依赖性。
README:这个标记文件用来描述你在GitHub仓库中的应用。你可以在这个文件中包括你的项目是做什么的以及它使用的依赖关系。
文件夹定位
在了解了flutter模板提供的默认文件和文件夹后,现在是时候组织我们的文件夹,以便以后在不消耗额外资源的情况下进行扩展。如上所述,如果我们的应用程序在短时间内消耗了大量的电力,那么客户会给它一个负面评价。
添加assets文件夹
正如我们在上面看到的,默认的模板包括public.yaml 文件夹中的资产。然而,在我们的组织中,我们将在根目录中添加一个单独的资产文件夹,然后添加到pubspec.yaml 文件的路径,如下所示。
flutter:
sdk: flutter
assets:
- assets/images/image.jpg
- assets/icons/home.ico
- assets/fonts/monsterat.tff
assets文件夹将包含fonts 、icons 和images 。下面的图2显示了添加assets 文件夹路径后的文件情况。
展开lib文件夹
lib文件夹是编写大部分代码的地方。我们将把这个文件夹分成几个子文件夹,如下图所示。

屏幕:这个文件夹将包含在设备屏幕上渲染的应用程序用户界面文件。
Utils:这个文件夹包含用于实现应用程序的业务逻辑的函数。例如,如果我们建立一个支持多账户登录的社交媒体应用程序,实用程序将确保根据当前登录的账户来改变所呈现的数据。
小工具:这个文件夹包含在应用程序中反复使用的部件。如果你使用API来列出关注某个特定用户的GitHub账户,关注者的列表视图保持不变。只有被渲染的数据是动态的。在这种情况下,我们将使用widgets文件夹中的followers widget 。
数据:数据文件夹包含从服务或数据库获取的数据集合。例如,如果我们的应用程序将使用Firebase,我们可以有一个用户模型,包含与密码名称、年龄等有关的用户信息。
服务:服务文件夹应该处理你的应用程序的网络逻辑。例如,一旦用户通过了谷歌或GitHub的认证,应用程序就需要用访问令牌更新后台。服务文件夹将包含负责处理这一功能的逻辑的实现。
保持良好的文件夹组织的好处
保持良好的文件夹结构是一种良好的编程实践,将帮助你的应用程序解决以下问题。
- 无法找到一个特定的文件。
- 反复编写一个代码块。
- 混淆用户界面和后端代码。
- 无限的局部变量。
- 应用程序造成严重的电池消耗。
- 作为一个团队开发时的混乱。
总结
在这篇文章中,我们已经了解了创建flutter应用程序时产生的每个文件和文件夹。我们继续整理了这些文件和文件夹,以方便代码的维护。