新闻详情

新闻详情

首页 / 资讯中心 / 详情

Flutter Deer 演进实录:从 CHANGELOG 看 Android 系统适配、Flutter SDK 升级与工程化打磨

发布时间:2026/9/25 2:45:00来源:尧图网络
Flutter Deer 演进实录:从 CHANGELOG 看 Android 系统适配、Flutter SDK 升级与工程化打磨
移动开发电商UI组件【免费下载链接】flutter_deer Flutter 练习项目(包括集成测试、可访问性测试)。内含完整UI设计图更贴近真实项目的练习。Flutter practice project (including integration testing and accessibility testing). Contains complete UI design drawings for a more realistic practice project.项目地址https://gitcode.com/gh_mirrors/fl/flutter_deer点击查看免费下载导读docs/CHANGELOG.md记录了 Flutter Deer 自 1.0.7 至 1.3.3 的全部版本变更是理解这个 Flutter 练习项目技术演进脉络的第一手资料。本文以该文档为骨架结合仓库中的pubspec.yaml、Android 工程配置、源码与测试逐版本还原其 Flutter SDK 升级路线、Android 系统版本适配策略、空安全迁移、深色模式与本地化改造等关键实践。读完本文你可以掌握一套可复用的 Flutter 项目版本演进与多端适配经验并能对照仓库源码验证每一个变更点的落地位置。一、版本总览一条清晰的 Flutter 升级路线从 CHANGELOG 与pubspec.yaml可以还原出项目完整的技术演进时间线。当前仓库版本为1.3.322见 pubspec.yamlFlutter SDK 约束为3.19.0、Dart SDK 为3.4.0 4.0.0见 pubspec.yaml而 README 声明的运行环境为 Flutter 3.41.0 / Dart 3.11.0见 README.md。版本Flutter SDK核心主题1.0.91.12.13hotfix.8布局优化、商品分类状态保留1.1.0—3D 翻转动画、PageView 卡顿优化、无障碍测试1.1.21.17.3Android 10 适配、扫码插件更新、unfocus 方式调整1.1.41.22.3navigator 示例、金额输入限制1.1.52.0.0Web 支持、FlatButton 弃用迁移、多语言切换1.1.6—密码键盘振动、新本地化方案、dio 4.0 适配、更换扫码插件1.1.7—深色模式导航栏适配、Android 11 键盘动画、Hero 动画、lottie demo1.2.0—空安全迁移、曲线图提示框修复1.2.23.0.0Android 12 适配1.2.33.7.0SDK 例行升级1.3.03.10.0Android 13 适配1.3.13.16.5SDK 例行升级1.3.2—Android 导航栏颜色优化1.3.33.24.0Android 14 适配可以看到CHANGELOG 中每一次 Flutter 大版本升级1.12 → 1.17 → 1.22 → 2.0 → 3.0 → 3.7 → 3.10 → 3.16 → 3.24都伴随着 Android 系统新版本的适配工作两条演进线相互交织这正是该文档最值得学习的部分。二、Android 系统版本适配从 Android 10 到 Android 14CHANGELOG 中反复出现适配 Android xx这是项目演进的主线之一每个版本的适配都能在仓库的 Android 工程配置中找到对应证据。1. Android 101.1.2深色模式与刘海屏深色模式启动页适配1.0.8项目早期即引入深色模式支持Android 10 的深色模式系统能力落地后持续完善。仓库中assets/images/order/dark/存放了深色模式专用图标lib/util/theme_utils.dart中定义了两套SystemUiOverlayStyletheme_utils.dart分别对应深色/浅色主题下的状态栏与导航栏颜色。刘海屏适配AndroidManifest.xml 中可见华为android.notch_support、小米notch.config等厂商刘海屏声明注释明确说明其他品牌或系统版本使用官方方法设置 shortEdges。2. Android 111.2.1包可见性与键盘动画包可见性适配API 30Android 11 强化了包可见性限制AndroidManifest.xml 中专门添加了queries声明注释为 Provide required visibility configuration for API level 30 and above对https与telscheme 进行了显式声明保证url_launcher等插件在 Android 11 上能正常拉起外部应用。键盘弹出动画1.1.7适配 Android 11 的键盘动画行为仓库依赖keyboard_actions见 pubspec.yaml处理键盘事件。3. Android 12 / 131.2.2 / 1.3.0targetSdk 与权限收敛Android 12 起系统对 targetSdk 要求收紧Android 13 引入通知运行时权限等变化。当前仓库的 build.gradle 已将targetSdkVersion设为 35、compileSdkVersion设为 36对应的正是 Android 14/15 级别说明 CHANGELOG 中 1.3.3 的适配 Android 14已经落实到了构建配置层。4. Android 141.3.3安装包权限与安全配置AndroidManifest.xml 声明了REQUEST_INSTALL_PACKAGES权限配合仓库中的InstallAPKPlugin.java与FileProvider7.java实现 APK 安装能力这是应用内更新功能在 Android 14 上正常工作的前提。android:networkSecurityConfigxml/network_security_configAndroidManifest.xml提供了网络安全配置。针对 7.0 的 FileProviderDeerPickerProvider见 AndroidManifest.xml则保证了图片选择等场景的 Uri 授权。5. Android 导航栏颜色优化1.3.2该版本专门优化导航栏颜色对应 theme_utils.dart 中SystemUiOverlayStyle对systemNavigationBarColor与systemNavigationBarIconBrightness的显式控制在深色/浅色两种主题下分别设置了Colours.dark_bg_color与白色避免导航栏与页面背景不一致造成的割裂感。三、Flutter SDK 升级路线与生态迁移CHANGELOG 是观察 Flutter 生态变迁的绝佳窗口每一次升级都伴随 API 变更与依赖适配。1. FlatButton 弃用迁移1.1.5Flutter 2.0 起FlatButton被标记为废弃项目同步迁移为TextButton。这是 Flutter 控件体系更替Material 规范升级的典型代表练习项目恰好承担了这部分迁移工作。2. dio 版本适配1.1.6 → 现在CHANGELOG 记录 1.1.6 适配 dio 4.0而当前仓库已升级到dio: ^5.9.0见 pubspec.yaml网络层封装位于 lib/net/dio_utils.dart、intercept.dart、error_handle.dart等其拦截器与错误处理的设计值得对照学习。3. 扫码插件更换1.1.6早期版本使用的扫码插件停止维护后项目更换为qr_code_scanner当前仓库通过 git 依赖固定了维护分支与 commit见 pubspec.yamlqr_code_scanner: git: url: https://github.com/NeverOvO/qr_code_scanner.git ref: 3fe7b88这种锁定 fork 与 commit的方式也是规避上游插件停更的常见策略。4. 依赖维护替代延续至今README 中明确列出了因上游停更而采用的替代方案flutter_swiper→flutter_swiper_null_safety_flutter3、flustars→flustars_flutter3并在 pubspec.yaml 通过dependency_overrides将scrollable_positioned_list固定为^0.3.2以兼容azlistview。这是长期维护 Flutter 项目必须面对的三方库健康度问题。四、空安全迁移1.2.0一次里程碑式的重构CHANGELOG 将迁移到空安全列为 1.2.0 的独立里程碑README 也明确记录迁移成果安装包减少 135KB10.3M → 10.1M见 README.md。当前仓库的 pubspec.yaml 已完全基于空安全约束environment: sdk: 3.4.0 4.0.0 flutter: 3.19.0从源码可以直观看到空安全落地后的形态例如 theme_utils.dart 中的可空返回类型static Color? getDarkColor(BuildContext context, Color darkColor) { return isDark(context) ? darkColor : null; }同时 1.2.0 还修复了曲线图长按滑动不展示提示框的问题对应lib/widgets/bezier_chart/模块说明空安全迁移并非单纯机械改写还顺带解决了交互缺陷。五、深色模式、本地化与多语言1.1.5 ~ 1.1.71. 深色模式全面适配从 1.0.8 启动页适配深色模式到 1.1.7 深色模式适配导航栏项目形成了完整的深色主题方案主题色定义在 lib/res/colors.dart深色模式下通过ThemeUtils系列工具方法切换颜色见 theme_utils.dart提供ThemeExtension扩展便捷读取主题theme_utils.dart主题切换逻辑位于 lib/setting/provider/theme_provider.dart主题设置页在 lib/setting/page/theme_page.dart。2. 本地化方案迁移与新本地化方案1.1.6CHANGELOG 记录 1.1.6 迁移到新的本地化方案1.1.5 则完成了多语言切换功能。仓库中可看到完整的落地产物l10n.yaml与 pubspec.yaml 的generate: true开启 gen-l10n 代码生成语言资源文件位于 lib/l10n/intl_zh.arb 与 lib/l10n/intl_en.arb生成的本地化类为 lib/l10n/deer_localizations.dart 及中英文实现语言切换状态由 lib/setting/provider/locale_provider.dart 管理。3. 密码键盘振动1.1.6密码输入体验优化引入了振动反馈对应 pubspec.yaml 中的vibration: 3.1.3与vibration_web: 1.6.8后者说明 Web 端同样支持。六、测试体系可访问性测试与集成测试的建立1.1.0 起CHANGELOG 在 1.1.0 记录添加 accessibility test1.1.3 添加 Demo 入口1.1.5 起 Web 支持完成。测试体系在仓库中十分完整可访问性测试test/目录下按模块划分如 test/account/account_accessibility_test.dart、test/goods/goods_accessibility_test.dart 等另有总入口 test/accessibility_test.dart集成测试integration_test/下包含 integration_test.dart、login_test.dart、goods_test.dartdriver 测试test_driver/按模块划分驱动脚本总入口为 test_driver/driver.dartREADME 给出的运行命令为flutter drive --targettest_driver/driver.dart这套单元测试 可访问性测试 集成测试 driver 测试的分层体系与 1.1.0 之后每版都在打磨的细节优化动画打断、unfocus、滑动卡顿等互为表里是练习项目贴近真实工程的最佳体现。七、动画与交互细节的持续打磨CHANGELOG 中大量条目属于交互细节优化每个条目都能在仓库中找到对应实现变更点版本仓库依据提现账号页 3D 翻转动画1.1.0lib/account/widgets/withdrawal_account_item.dart侧滑删除优化1.1.0flutter_slidable依赖pubspec.yamlPageView 滑动卡顿优化1.1.0README 提及的 RepaintBoundary 实践商品列表进入编辑页 Hero 动画1.1.7lib/goods/page/goods_list_page.dart 与 goods_edit_page.dartlottie 使用 demo1.1.7lib/demo/lottie/、assets/lottie/bunny_new_mouth.json、lottie: ^3.3.0pubspec.yamlnavigator 示例1.1.4lib/demo/navigator/RouterDelegate RouteInformationParser 实现金额数字输入限制1.1.4lib/util/input_formatter/number_text_input_formatter.dart文字大小不受系统设置影响1.0.9lib/util/screen_utils.dart 等工具封装这些条目共同展示了练习项目逼近真实工程的定位动画不能打断、滑动不能卡顿、输入要有约束、交互要有反馈。八、构建与打包实践延伸自 Android 问题汇总CHANGELOG 虽未直接包含打包命令但 docs/Android问题汇总.md 中的打包章节与 1.3.x 的 Android 14 适配直接相关值得一并掌握flutter build apk --target-platform android-arm64 --obfuscate --split-debug-info/flutter_deer/默认flutter build apk包含 32/64 位--target-platform可指定android-arm或android-arm64以减小体积--split-debug-info可省略调试信息进一步瘦身但注意此方式无法获取可读堆栈--obfuscate开启混淆需与--split-debug-info配合。当前 Android 工程构建栈为AGP8.12.3 Kotlin2.0.21见 settings.gradle、Gradle8.13见 gradle-wrapper.properties、Java 17 编译见 build.gradle可作为新版本 Flutter 项目构建配置的参考基线。九、总结CHANGELOG 教给我们的项目维护方法论纵观docs/CHANGELOG.md的 16 个版本可以提炼出三条可复用的维护经验版本升级与系统适配联动每次 Flutter SDK 大版本升级都同步完成最新 Android 系统的适配manifest 权限、queries 声明、targetSdk 提升、厂商刘海屏适配避免技术债积压依赖健康度持续管理对停更插件主动更换扫码、轮播、工具库对存在兼容问题的依赖用 fork 固定 commit 或dependency_overrides兜底这条经验在 pubspec.yaml 中有直接体现测试与体验细节同步演进可访问性测试、集成测试随功能同步建立动画、键盘、输入限制等细节在每个版本持续打磨构成了功能可用 体验流畅 可验证的完整闭环。对于正在维护 Flutter 生产项目的开发者这份 CHANGELOG 配合仓库源码是一份可以直接对照学习的版本演进范本。赞分享移动开发电商UI组件【免费下载链接】flutter_deer Flutter 练习项目(包括集成测试、可访问性测试)。内含完整UI设计图更贴近真实项目的练习。Flutter practice project (including integration testing and accessibility testing). Contains complete UI design drawings for a more realistic practice project.项目地址https://gitcode.com/gh_mirrors/fl/flutter_deer点击查看免费下载相关推荐Flutter camera 插件版本演进全解析从 CHANGELOG 看 API 迭代、架构迁移与工程实践Flutter camera 插件版本演进全解析从 CHANGELOG 看 API 迭代、架构迁移与工程实践 camera 是 Flutter 官方维护的相机跨平台移动开发UI组件开发工具flutter_plugin_tools 命令体系全解从 CHANGELOG 看 Flutter 官方多包仓库自动化工具的演进与源码实现flutter_plugin_tools 命令体系全解从 CHANGELOG 看 Flutter 官方多包仓库自动化工具的演进与源码实现 本文以 script移动开发跨平台url_launcher 6.x 深度指南从 CHANGELOG 看 Flutter 官方 URL 启动插件的 API 演进与实战配置url_launcher 6.x 深度指南从 CHANGELOG 看 Flutter 官方 URL 启动插件的 API 演进与实战配置 导读 url_laun移动开发跨平台上一篇Trippy最小化安装仅需5MB空间的轻量级部署下一篇CANN/asc-devkit异步通道解锁指令创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

MCP协议开发规范实战:用TaoToken统一Key打通Cline与settings.json配置骨架 2026/9/25 3:19:53

MCP协议开发规范实战:用TaoToken统一Key打通Cline与settings.json配置骨架

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
ctf-wiki 花指令(Junk Code)去除实战:原理、编写手法与 N1CTF2020 oflo 完整分析流程 2026/9/25 3:19:47

ctf-wiki 花指令(Junk Code)去除实战:原理、编写手法与 N1CTF2020 oflo 完整分析流程

文档网络安全教程 【免费下载链接】ctf-wiki Come and join us, we need you! 项目地址: https://gitcode.com/gh_mirrors/ct/ctf-wiki 点击查看 免费下载 花指令(junk code)是静态逆向中常见的一类"反汇编器陷阱":程序…

阅读更多 →
最新论文搜索与追踪:从检索式到引文网络的完整方法论 2026/9/25 3:19:28

最新论文搜索与追踪:从检索式到引文网络的完整方法论

每次组会汇报文献进展,导师问“最近领域内有没有什么值得关注的新工作”,你是不是只能说出几篇组会前临时在群里转发的文章?又或者,你刚把检索式里的关键词调整了一圈,点下搜索,翻了几页全是自己已经看过的…

阅读更多 →
【无人机动态避障】基于龙格库塔优化算法RUN融合动态窗口法DWA的无人机三维动态避障方法研究MATLAB代码 2026/9/25 3:19:28

【无人机动态避障】基于龙格库塔优化算法RUN融合动态窗口法DWA的无人机三维动态避障方法研究MATLAB代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、算法改进、程序设计科研仿真。🍎 往期回顾关注个人主页:完整代码获取 定制创新 论文复现私信🍊个人信条:做科研&#xff0c…

阅读更多 →
BabelDOC 完整教程:5分钟跑通英文论文 PDF 双语翻译 2026/9/25 3:19:28

BabelDOC 完整教程:5分钟跑通英文论文 PDF 双语翻译

BabelDOC 完整教程:5分钟跑通英文论文 PDF 双语翻译 【免费下载链接】BabelDOC Yet Another Document Translator 项目地址: https://gitcode.com/GitHub_Trending/ba/BabelDOC BabelDOC 是一款开源的 PDF 翻译库,把英文论文译成中文时保留排版、…

阅读更多 →
@sentry/node 导出一致性测试应用(node-exports-test-app)深度解析 2026/9/25 3:19:22

@sentry/node 导出一致性测试应用(node-exports-test-app)深度解析

可观测性 【免费下载链接】sentry-javascript Official Sentry SDKs for JavaScript 项目地址: https://gitcode.com/gh_mirrors/se/sentry-javascript 点击查看 免费下载 导读 在 Sentry JavaScript 生态中,sentry/node 是众多框架 SDK(如…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉