当前位置:

首页 > 编程开发 > 一文带你弄懂Flutter的热部署

一文带你弄懂Flutter的热部署

关于Dart中的运行方式JIT:JustInTime.动态解释,一边翻译一边执行,也称为即时编译,如JavaScript,Python等,在开发周期中使用,可以动态下发和执行代码,开发测试效率高,但是运行速度和性能则会受到影响,Flutter中的热重载正是基于此特性AOT:AheadofTime.静态编译,是指程序在执行前全部被翻译为机器码,提前编译,如C,C++,OC等,发布时期使用AOT,就不需要像RN那样在跨平台JavaScript代码和原生Android、iOS代码间建立低效

本文目录

    一文带你弄懂Flutter的热部署

    关于Dart中的运行方式

    • JIT:Just In Time . 动态解释,一边翻译一边执行,也称为即时编译,如JavaScript,Python等,在开发周期中使用,可以动态下发和执行代码,开发测试效率高,但是运行速度和性能则会受到影响,Flutter中的热重载正是基于此特性
    • AOT: Ahead of Time. 静态编译,是指程序在执行前全部被翻译为机器码,提前编译,如 C ,C++ ,OC等,发布时期使用AOT,就不需要像RN那样在跨平台JavaScript代码和原生Android、iOS代码间建立低效的方法调用映射关系。

    程序的运行方式和具体的语言没有强制关系,比如python,既可以是JIT 也可以是AOT,Dart是少数同时支持JIT和AOT的语言之一。

    Dart在开发过程中使用JIT,每次更改都不需要在编译成字节码,节省了大量时间,在部署中使用AOT生成高效的ARM代码保证高效的性能,所以说Dart具有运行速度快,执行性能好的特点。

    Hot Reload

    在Dart代码文件中修改字符串“Hello, World”,添加一个惊叹号,点击保存或者热刷新按钮就可以立即更新到界面上,仅需几百毫秒:

    一文带你弄懂Flutter的热部署

    Flutter通过将新的代码注入到正在运行的DartVM中,来实现Hot Reload这种神奇的效果,在DartVM将程序中的类结构更新完成后,Flutter会立即重建整个控件树,从而更新界面。但是热刷新也有一些限制,并不是所有的代码改动都可以通过热刷新来更新:

    1. 编译错误,如果修改后的Dart代码无法通过编译,Flutter会在控制台报错,这时需要修改对应的代码。
    2. 控件类型从StatelessWidget到StatefulWidget的转换,因为Flutter在执行热刷新时会保留程序原来的state,而某个控件从stageless→stateful后会导致Flutter重新创建控件时报错“myWidget is not a subtype of StatelessWidget”,而从stateful→stateless会报错“type ‘myWidget’ is not a subtype of type ‘StatefulWidget’ of ‘newWidget’”。
    3. 全局变量和静态成员变量,这些变量不会在热刷新时更新。
    4. 修改了main函数中创建的根控件节点,Flutter在热刷新后只会根据原来的根节点重新创建控件树,不会修改根节点。
    5. 某个类从普通类型转换成枚举类型,或者类型的泛型参数列表变化,都会使热刷新失败。

    热刷新无法实现更新时,执行一次热重启(Hot Restart)就可以全量更新所有代码,同样不需要重启App,区别是restart会将所有Dart代码打包同步到设备上,并且所有状态都会重置。

    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
    作者最新文章
    编程开发 Flutter
    相关文章 更多
    flutter页面传值到后台的方法及示例代码
    flutter页面传值到后台的方法及示例代码

    flutter页面传值到后台的完整实现方法及示例代码,帮助读者快速掌握相关技术要点。

    flutter状态管理原理是什么及运行机制详解
    flutter状态管理原理是什么及运行机制详解

    详解Flutter状态管理底层原理,分析Widget、Element与RenderObject三层树结构,解释setState触发重建的因果机制,对比InheritedWidget与主流状态管理库的实现差异,提供性能优化与选型建议。

    Flutter横向树形选择器实现效果及完整代码
    Flutter横向树形选择器实现效果及完整代码

    基于Flutter实现横向树形选择器,核心维护面包屑路径与当前选项列表。点击子项时更新路径,点击面包屑可回退。支持递归查找回显路径和搜索叶子节点。提供泛型抽象类,支持安全区适配与两种交互模式,代码仅700余行。

    Golang 和 Dart 在 Web 开发中的比较
    Golang 和 Dart 在 Web 开发中的比较

    Go和Dart是适用于Web开发的现代编程语言,具有自己的优势和劣势。Go以其高性能、并发支持和简洁语法而著称,而Dart以其易用性、跨平台兼容性和灵活的编程范式而著称。具体选择取决于项目需求:Go适合高性能和并发应用程序,Dart适合易用性和跨平台兼容性优先的应用程序,例如跨平台移动和Web应用程序。

    PHP 与 Flutter 的比较:移动端开发的最佳选择
    PHP 与 Flutter 的比较:移动端开发的最佳选择

    PHP和Flutter是移动端开发的流行技术。Flutter胜在跨平台能力、性能和用户界面,适合需要高性能、跨平台和自定义UI的应用程序。PHP则适用于性能较低、不跨平台的服务器端应用程序。

    Golang学习之基于Flutter的Web应用程序开发
    Golang学习之基于Flutter的Web应用程序开发

    近年来,移动应用程序开发行业飞速发展,Flutter框架和Golang编程语言的出现为开发人员提供了更多的选择。Flutter是谷歌开发的一款开源UI框架,可以快速构建漂亮且高性能的移动应用程序,而Golang是谷歌开发的高效编程语言,也因其并发性能闻名。本文将介绍如何基于Flutter和Golang来开发Web应用程序。一、Flutter与Golang的简

    Flutter组件2:Icons的妙用技巧
    Flutter组件2:Icons的妙用技巧

    在Flutter开发中,图标是界面设计的重要组成部分。通过使用图标,我们可以为用户提供更直观的视觉体验。本文将详细介绍如何在Flutter中使用Icons组件,并展示不同场景下的图标应用。用户界面产品在设计用户界面时,图标可以帮助用户更快速地理解和操作应用程序。例如,在移动应用中,图标可以用于导航栏、按钮等。以下是几种常见的UI产品图标使用场景:视频播放视频播放界面中,图标用于控制播放、暂停、快进等功能。图标的使用可以让用户直观地操作视频内容。交流对话在聊天或社交应用中,图标可以用于表示消息类型、发送状态

    使用PHP结合Flutter构建跨平台美观的移动应用
    使用PHP结合Flutter构建跨平台美观的移动应用

    在今天的移动应用市场中,跨平台应用的需求越来越多。为了满足这种需求,Google推出了Flutter,一个开源软件开发框架,能够支持快速构建美观的iOS和Android应用程序。与此同时,PHP作为一种流行的Web编程语言,也可以与Flutter一起使用,以便构建可靠的、高效的、美观的跨平台应用程序。在本文中,我将探讨如何在PHP中使用Flutter并构建美

     新广告格式和全屏广告设计:YandexAds 推出 Yandex 移动广告 SDK7
    新广告格式和全屏广告设计:YandexAds 推出 Yandex 移动广告 SDK7

    Yandex移动广告SDK7为应用开发商提供借由YandexAdvertisingNetwork增加其应用内广告收入的新机会。除此之外,新的信息流广告格式助力应用变现,同时全屏格式也新增设计。2024年4月24日,上海--YandexAdvertisingNetwork是YandexAds面向应用的服务生态系统的一部分,助力应用在iOS和Android操作系统上变现,同时可以在Unity和Flutter平台上使用插件。超过12,000款应用通过展示来自300,000多名直接广告主以及80多个第三方广告来源

    如何利用Redis和Dart开发实时日程安排功能
    如何利用Redis和Dart开发实时日程安排功能

    如何利用Redis和Dart开发实时日程安排功能在现代社会中,随着时间的紧张和任务的增多,日程安排功能成为许多人生活和工作中不可或缺的一部分。为了提高效率并使日程安排更加实时,利用Redis和Dart开发实时日程安排功能是一种不错的选择。本文将介绍如何使用Redis和Dart来实现这一功能,并提供具体的代码示例。Redis简介Redis是一种基于内存的高性能

    查看更多
    精品专题 更多
    装机必备
    装机必备

    正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

    Windows
    Windows

    正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

    PDF教程
    PDF教程

    正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

    Mac软件 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    Aperty macOS版
    Aperty macOS版
    macOS

    Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

    WINDOWS 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    PixTV 网页版
    PixTV 网页版
    Windows

    PixTV 是一款在浏览器中使用的 AI 视觉内容创作平台,提供图片、视频、音频、文字生成、AI 分镜、局部重绘、提示词反推和无限画布等工具,适合短剧、漫剧、广告及社交媒体内容制作。