flutter_boilerplate

flutter_boilerplate

Flutter生产级应用启动模板

此Flutter启动模板为生产环境优化,集成图标生成、REST API、分析监控等功能,帮助开发者快速搭建项目框架。模板整合dio、firebase、go_router等实用组件,支持自定义状态管理和应用架构。简化初始配置,加速Flutter应用开发流程。

Flutter模板项目初始化应用开发FirebaseGithub开源项目

Flutter 样板

这是我用于生产应用程序的 Flutter 初始模板,适用于带有 REST 后端的项目。

这个模板的主要目的是让你能够尽快开始下一个生产就绪的 Flutter 项目,而无需处理初始项目设置的所有麻烦。

这是什么

这是一个简单的样板模板,用于创建生产就绪的 Flutter 应用程序,包括图标/启动屏幕生成、REST 样板以及报告(分析、性能和崩溃报告),所有这些都已为你配置好。

这不是什么

由于大家在状态管理和应用架构方面有些过于固执己见,这个模板不对这些主题做出任何意见。

因此,这不是你的状态管理和应用架构模板。 所以,你可以选择任何状态管理方法或移动东西来创建你喜欢的架构。

或者 fork 这个仓库,根据你的喜好自定义模板,使其成为你自己的!

也就是说,我可能会考虑在未来创建包含我的架构和状态管理观点的分支。

开始使用

  1. 获取模板

    通过以下方式之一使用此仓库创建你的项目:

    • 在 Github 上,点击 "Use this template" 按钮,这将允许你使用此仓库作为基线创建项目,或者
    • 将此仓库克隆到你的本地机器
  2. 安装依赖

    运行 flutter pub get 获取依赖项。

  3. 应用程序包名

    现在要在 Android 和 iOS 清单中更改应用程序的包名/捆绑标识符,请运行 flutter pub run change_app_package_name:main <com.new.package.name>

  4. 应用程序名称 接下来,你需要更改应用程序的用户可读标签 - Info.plist(对于 iOS)中的 CFBundleName 和/或 CFBundleDisplayName,以及 AndroidManifest.xml(对于 Android)中应用程序节点的 android:label 字段。

    很遗憾这一步是手动的;如果 change_app_package_name 能为你做这个就好了。

    注意:你还需要在 pubspec.yaml 中更改包的 namedescription

  5. 应用图标

    然后我们将使用 flutter_launcher_icons 包自动生成你的应用启动器图标。

    • 将你想要作为启动器图标的图像复制到 assets/icon/icon.png
    • 现在运行 flutter pub run flutter_launcher_icons。这个命令将从 PNG 文件为不同的 DPI 自动生成 Android 和 iOS 启动器图标,并将它们放置在各自的资源目录中。

    注意:查看包文档以获取有关生成启动器图标的更多配置选项,并相应地更新你的 pubspec.yaml。 例如,你可能想要为不同平台使用不同的图标,因为 Android 允许你使用透明图标,而 iOS 不允许。 然而,此模板中包含的默认配置在大多数情况下已经足够。

  6. 启动屏幕

    然后我们将为两个平台生成原生启动屏幕,你的应用将在加载完成之前显示这些屏幕,为此我们将使用 flutter_native_splash

    • 将你想要在启动屏幕中心显示的图像复制到 assets/splash/splash.png
    • 要更改启动屏幕的背景颜色,请转到 pubspec.yaml 中的 flutter_native_splash -> color 部分,输入你喜欢的颜色代码。默认是白色。
    • 最后,运行 flutter pub run flutter_native_splash:create 以从启动图像生成资源并更新你的清单文件。
  7. 环境变量

    我们将使用 envied 包.env 文件加载应用程序配置。 这将允许我们在不同环境(如生产、暂存或调试模式)下运行应用程序时轻松切换不同的应用程序配置。

    所有 .env 文件都可以放在项目的根目录中。 要设置新环境,创建一个带有 .env 扩展名的新文件(例如 .envdebug.envstaging.env),然后复制 .env-sample 的内容并根据需要填充它。

    lib/env.dart 文件将环境变量导入到应用程序中。查看文档以了解如何使用 envied 包。

    要混淆和隐藏敏感的 ENV 变量,请使用 obfuscate 属性,如下所示:@EnviedField(obfuscate: true)

    注意: 所有 .env 文件(和 enviedenv.g.dart 文件)默认都被 .gitignore 忽略,因为它们可能包含敏感信息,如路径、密钥等。 要指定新的环境变量键,请将它们添加到 .env-sample 文件中,其他开发人员将复制该文件,并提供相应的配置。

  8. Firebase 报告

    在这一步中,我们将把不同的 Firebase 报告工具集成到你的应用程序中,包括 Firebase AnalyticsFirebase PerformanceCrashlytics

    • Firebase 控制台 上创建你的 Firebase 项目
    • 下载你的 GoogleService-Info.plistgoogle-services.json,并将它们放入 iOS 和 Android 的相应文件夹中。我已经在 .gitignore 中忽略了这些文件,这样你就不会不小心将它们检入版本控制系统。
    • 好了,就这样。你完成了!不需要进一步配置;我已经为你做好了。

    注意:

    • 我们在这个项目中使用的所有 Firebase 服务都是免费的 - 至少在写这篇文章时是这样 - 所以它们不会产生任何费用。
    • 通过这一步,我们还使用 dio_firebase_performanceFirebase Performance Monitoring 集成到你的 HTTP 客户端中,这是一个 Dio 拦截器,它将测量所有 HTTP 调用的性能并将统计数据报告给 Firebase。
  9. 待办事项

    在 lib 文件夹中查找任何 TODO,并解决它们。

  10. 开始工作!

    现在开始开发你的应用程序。祝你编码愉快。

  11. 部署

    在发布 Android 应用之前,请确保通过以下方式签名:

    如果你还没有,生成一个 Keystore 文件。如果你已经有了,忽略这一步,转到下一步。

    转到 android/key.properties 并包含你的 Keystore 路径、别名和密码。

  12. 盈利!

<img height=200 src="https://yellow-cdn.veclightyear.com/2b54e442/7715bb0b-411a-4204-a33d-4e7c29f30a92.png">

使用的包

  • change_app_package_name - 使用单个命令更改应用程序包名。它使过程变得非常简单和快速。
  • dio - 我认为这是 Flutter 最好的 HTTP 客户端。可重用的拦截器,对吧?
  • dio_http_cache - Dio 拦截器,用于缓存请求。它拦截请求以响应缓存的数据,或拦截新的远程响应以进行缓存。非常可配置。
  • dio_log - 这是一个 Dio 拦截器,可以在应用程序的 UI 中显示你的请求和响应日志
  • envied - 从 .env 文件加载配置。
  • firebase_analytics - Firebase Google Analytics 的 Flutter 插件,这是一个应用测量解决方案,提供 Android 和 iOS 上的应用使用情况和用户参与度的洞察。
  • firebase_crashlytics - Firebase Crashlytics 的 Flutter 插件。它向 Firebase 控制台报告未捕获的错误。
  • firebase_performance - Firebase 性能监控的 Flutter 插件,这是一个应用测量解决方案,可在 Android 和 iOS 上监控跟踪和 HTTP/S 网络请求。
  • firebase_performance_dio - Dio 的拦截器实现,将 HTTP 请求指标数据发送到 Firebase。
  • flutter_launcher_icons - 一个命令行工具,简化了更新 Flutter 应用启动器图标的任务。
  • flutter_native_splash - 自动生成用于在 Android 和 iOS 中添加启动屏幕的原生代码。可以自定义特定平台、背景颜色和启动图像。
  • freezed - 简单但功能强大的代码生成器,用于不可变类,具有联合/模式匹配/复制等所有好东西。由 Provider 的创建者和维护者 Remi Rousselet 制作。可以与 json_serializable 配合使用,满足你所有的 fromJson()toJson() 需求。
  • go_router - 这个包建立在 Flutter 框架的 Router API 之上,提供了方便的基于 URL 的 API 来在不同屏幕之间导航。
  • screenshots - Screenshots 是一个独立的命令行实用程序和包,用于捕获 Flutter 的屏幕截图图像。
  • pretty_dio_logger - Dio 拦截器,它漂亮地打印通过 Dio 的 HTTP 请求和响应到控制台

给我买杯咖啡

编辑推荐精选

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

Trae

Trae

字节跳动发布的AI编程神器IDE

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

Hunyuan3D-2

Hunyuan3D-2

高分辨率纹理 3D 资产生成

Hunyuan3D-2 是腾讯开发的用于 3D 资产生成的强大工具,支持从文本描述、单张图片或多视角图片生成 3D 模型,具备快速形状生成能力,可生成带纹理的高质量 3D 模型,适用于多个领域,为 3D 创作提供了高效解决方案。

3FS

3FS

一个具备存储、管理和客户端操作等多种功能的分布式文件系统相关项目。

3FS 是一个功能强大的分布式文件系统项目,涵盖了存储引擎、元数据管理、客户端工具等多个模块。它支持多种文件操作,如创建文件和目录、设置布局等,同时具备高效的事件循环、节点选择和协程池管理等特性。适用于需要大规模数据存储和管理的场景,能够提高系统的性能和可靠性,是分布式存储领域的优质解决方案。

下拉加载更多