学习地址1:https://pan.baidu.com/s/1g3qObbP4Idb8QrStYeWOvA 提取码:6icf
学习地址2:https://share.weiyun.com/mDuF95rR 密码:c7r3ec
本文结合了最新版的Flutter、Dart、主流插件技术进行企业级项目开发,并融入了大量Flutter版本更新问题的解决方案,以及与H5混合开发和通信、多屏适配等高频技能,文中还将作者近几年在一线开发中积累的大量开发、避坑等经验传授给大家,让各位小伙伴在实际开发中能更好的运用Flutter技术。
一、那么,首先我们先来认识Flutter,到底什么是Flutter?
Flutter是一种由谷歌开发的开源用户界面(UI)工具包,用于在多个平台上构建高性能、美观和流畅的移动应用程序。它使用Dart编程语言,并提供丰富的UI组件和工具,可以快速构建现代化的应用程序界面。
二、Flutter的特点和优势
1、跨平台开发:Flutter允许开发人员使用单个代码库构建应用程序,可在多个平台上运行,包括iOS、Android、Web和桌面操作系统。这简化了跨平台开发的流程,减少了开发成本和工作量。
2、响应式UI:Flutter采用响应式编程模型,允许开发人员根据数据的变化自动更新UI。这意味着UI可以根据应用程序状态的变化实时更新,提供流畅的用户体验
3、热重载(Hot Reload):Flutter的热重载功能允许开发人员在应用程序运行时快速查看和调试代码更改。开发人员可以实时看到UI的变化,加快了开发周期,提高了开发效率。
4、自绘引擎:Flutter使用Skia图形引擎进行渲染,这意味着应用程序的每个像素都可以通过Flutter进行绘制。这样可以实现高度自定义的UI设计和动画效果,并提供卓越的性能。
5、丰富的UI组件:Flutter提供了一套丰富而强大的UI组件,可以用于构建漂亮和现代化的用户界面。这些组件具有高度的可定制性,使开发人员能够创建独特的应用程序界面。
6、开发效率:Flutter的热重载、响应式UI和丰富的UI组件使开发人员能够更快速地开发应用程序。单个代码库的使用也简化了代码维护和版本控制的过程。
7、社区支持和生态系统:Flutter拥有庞大的开发者社区和活跃的生态系统。开发人员可以从社区中获取大量的资源、插件和解决方案,加快开发进程,并且可以与其他开发者进行交流和合作。
8、良好的性能:由于Flutter使用自绘引擎和硬件加速,应用程序可以实现卓越的性能。Flutter应用程序通常具有快速的响应时间、流畅的动画效果和较低的内存占用。
三、Windows 与 Flutter
数年前,我们提出了一个雄心勃勃的愿景,要将 Flutter 从 iOS 和 Android 移动应用领域扩展到更多平台,包括 web 端和桌面端。
Flutter 可以在平台间通用的内容很多: 从可移植、硬件加速的 Skia 图像处理引擎,到 Flutter 渲染系统,核心原语 (如动画、主题、文本输入和多语言任务),以及 Flutter 包含的数百个 widget。
然而,桌面应用并不只是运行在更大屏幕上的移动应用。它们是专门针对键盘和鼠标等输入设备进行设计的。它们的窗口大小可调,且通常在宽屏显示器上运行。辅助功能、输入法编辑器和视觉样式等关键领域的习惯也与移动应用有所不同。桌面应用还与底层操作系统中的各种 API 集成: 从文件系统选择器到设备硬件,再到数据存储 (如 Windows 注册表),等等不一而足。
因此,我们在将 Flutter 引入 Windows 的同时,也针对 Windows 进行了定制。
Flutter 的 Windows 实现结合了 Dart 框架和 C++ 引擎,与我们对 Android 和 iOS 提供的支持一致。Windows 和 Flutter 通过包含 Flutter 引擎的嵌入层进行通信,该嵌入层负责翻译和调度 Windows 消息。Flutter 与 Windows 相互协调,完成界面在屏幕上的绘制,处理窗口大小调整及 DPI 变更等事件,并使用 Windows 现有的方式处理多语言任务 (例如输入法编辑器)。
四、在开发中,Flutter 应用会在一个 VM(程序虚拟机)中运行,从而可以在保留状态且无需重新编译的情况下,热重载相关的更新。对于发行版 (release) ,Flutter 应用程序会直接编译为机器代码(Intel x64 或 ARM 指令集),或者针对 Web 平台的 JavaScript。 Flutter 的框架代码是开源的,遵循 BSD 开源协议,并拥有蓬勃发展的第三方库生态来补充核心库功能。
概览分为以下几部分内容:
分层模型:Flutter 的构成要素。
响应式用户界面:Flutter 用户界面开发的核心概念。
widgets 介绍:构建 Flutter 用户界面的基石。
渲染过程:Flutter 如何将界面布局转化为像素。
平台嵌入层 的概览:让 Flutter 应用可以在移动端及桌面端操作系统执行的代码。
将 Flutter 与其他代码进行集成:Flutter 应用可用的各项技术的更多信息。
Web 支持:Flutter 在浏览器环境中的特性的概述。
五、如何创建自己的自定义原生集成插件?
如果有 Flutter 官方或社区第三方插件没有涵盖的平台特定的功能,你可以参考 开发包和插件 文档创建自己的插件。
Flutter 的插件架构,简而言之,和 Android 中的事件总线的使用非常相似:你发送一个消息,并让接受者处理并返回一个结果给你。在这种情况下,接受者是运行在 Android 或 iOS 原生端的代码。
六、如何在 Flutter 应用中使用 NDK?
如果你在现有的 Android 应用中使用 NDK,并且希望你的 Flutter 应用可以利用你的 native 库,你可以通过创建一个自定义插件实现。
你的自定义插件首先和你的 Android 应用通信,Android 应用会通过 JNI 调用 native 方法。一旦有返回值,就可以向 Flutter 发送回一个消息并渲染结果。
暂时还不支持从 Flutter 中直接调用 native 代码。
有疑问加站长微信联系(非本文作者)
![](https://static.golangjob.cn/static/img/footer.png?imageView2/2/w/280)