还对Flutter理解不透?看完这些迟早成为大佬~

Flutter学习之旅(三)----Flutter常见问题FAQ,看完之后不再是Flutter小白 很多人还不熟悉甚至没听过Flutter,只知道它是用来搞移动端开发的,现在Android和iOS开发已经很成熟了,还有RN(React Native)框架,为什么谷歌还要搞一个Flutter,它能够做什么,究竟比别人好在哪里,有什么优势和不足,又是怎么做到的?下面是一些关于Flutter的常见问题,参考文章(英文版)。 相信看完之后你就真相大白了。什么是Flutter?Flutter是移动端开发S 阅读详情

Flutter是什么

在这里插入图片描述

Flutter简介

Flutter是谷歌的移动UI框架,可以快速在iOS和Android上构建高质量的原生用户界面,一份代码可以同时生成iOS和Android两个高性能、高保真的应用程序。Flutter目标是使开发人员能够交付在不同平台上都感觉自然流畅的高性能应用程序,并且兼容滚动行为、排版、图标等方面的差异。

flutter的开发语言是Dart,如果您使用过Java或JavaScript之类的语言,则能够很快上手,甚至有一些Flutter应用是没有编程经验的人写的!在全世界,Flutter正在被越来越多的开发者和组织使用,并且Flutter是完全免费、开源的。

跨平台自绘引擎

Flutter与其它大多数跨平台框架不同,因为Flutter既不使用WebView,也不使用操作系统的原生控件。相反,Flutter使用自己的高性能渲染引擎来绘制widget。这样不仅可以保证在Android和iOS上UI的一致性,而且也可以避免对原生控件依赖而带来的限制及高昂的维护成本。

Flutter使用Skia作为其2D渲染引擎,Skia是一个 2D的绘图引擎库,其前身是一个向量绘图软件,Chrome和 Android均采用 Skia作为绘图引擎。Skia提供了非常友好的 API,并且在图形转换、文字渲染、位图渲染方面都提供了友好、高效的表现。Skia是跨平台的,所以可以被嵌入到 Flutter的 iOS SDK中,而不用去研究 iOS闭源的 Core Graphics / Core Animation。

目前Flutter默认支持iOS、Android、Fuchsia(Google新的自研操作系统)三个移动平台。但Flutter亦可支持Web开发(Flutter for web)和PC开发,本书的示例和介绍主要是基于iOS和Android平台的,其它平台读者可以自行了解。

Flutter的优势

开发效率高毫秒级的热重载,修改后,您的应用界面会立即更新。使用丰富的、完全可定制的widget在几分钟内构建原生界面。

富有表现力和灵活的UI快速发布聚焦于原生体验的功能。分层的架构允许您完全自定义,从而实现难以置信的快速渲染和富有表现力、灵活的设计。

原生性能Flutter包含了许多核心的widget,如滚动、导航、图标和字体等,这些都可以在iOS和Android上达到原生应用一样的性能。
Flutter的开发语言

Flutter采用的是Dart作为开发框架和widget的语言。

为什么选择Dart语言?

Flutter在四个主要维度进行了评估,并考虑了框架作者、开发人员和最终用户的需求等因素。我们发现不同的语言在不同的层面符合一部分需求,但Dart在所有评估维度上得分都很高,并且符合我们的所有要求和标准。

Dart运行时和编译器支持Flutter的两个关键特性的组合:

基于JIT的快速开发周期:允许使用类型的语言进行形状更改和有状态的热重载;

AOT编译器,可生成高效的ARM代码,可以快速启动并拥有可预测的生产部署性能。

此外,flutter开发团队与Dart社区密切合作,Dart社区正在积极投入资源改进Dart在Flutter中的使用。例如,当我们采用Dart时,该语言没有提供生成原生二进制文件的工具链(这对于实现可预测的高性能是很有帮助的),但是现在实现了,因为Dart团队为Flutter构建了它。同样,DartVM之前已经针对吞吐量进行了优化,但团队现在正在优化VM的延迟时间,这对于Flutter的工作负载更为重要。

Dart在以下主要标准上得到高分:

开发人员的效率Flutter的主要价值主张之一是通过让开发人员使用相同的代码库为iOS和Android创建应用程序,从而节省了工程资源。使用高效的语言可以进一步加速开发周期,并使Flutter更具吸引力。这对我们的framework团队和开发人员都非常重要。大部分Flutter功能都是用Dart实现,因此我们需要在10万行代码时能保持高效的而不会牺牲framework和widget的可读性。

面向对象虽然我们可以使用非面向对象的语言,但这意味着要重新解决几个难题。另外,绝大多数开发人员都具有面向对象开发的经验,因此更容易学习如何使用Flutter进行开发。

可预测,高性。借助Flutter,我们希望使开发人员能够快速创建流畅的用户体验。为了实现这一点,我们需要能够在每个动画帧中运行大量的代码。这意味着我们需要一种既能提供高性能又能提供可预测性能的语言,而不会出现会导致丢帧的周期性暂停。

快速内存分配 Flutter框架使用函数式流,它很大程度上依赖于底层的内存分配器,从而有效地处理小的、短期的内存分配会非常重要,所以在缺乏此功能的语言中Flutter无法有效地工作。

1.1.2 Flutter框架结构

Flutter框架是一个分层的结构,每个层都建立在前一层之上。

这个设计的目标是帮助你用更少的代码做更多的事情。例如,Material层是通过组合来自Widget层的基本Widget来构建的, 并且Widgets层本身是通过较低级对象渲染层构建的。

层为构建应用程序提供了许多选项。选择一种自定义的方法来释放框架的全部表现力,或者使用构件层中的构建块,或混合搭配。您可以实现Flutter提供的所有现成的widget,或者使用Flutter团队用于构建框架的相同工具和技术创建您自己的定制widget。

没有什么是隐藏的。您可以从高层次,统一的widget概念中获得开发效率优势,而不会牺牲您希望深入到下层的能力。

Flutter框架分三层 Framework,Engine, Embedder

Flutter Framework

Framework使用dart语言实现,包括UI,文本,图片,按钮等Widgets,渲染,动画,手势等。此部分的核心代码是flutter仓库下的flutter package,以及sky_engine仓库下的 io, async, ui(dart:ui库提供了Flutter框架和引擎之间的接口)等package。

Flutter Engine

Engine使用C++实现,主要包括:Skia, Dart 和 Text。

Skia是开源的二维图形库,提供了适用于多种软硬件平台的通用API。其已作为Google Chrome,Chrome OS,Android, Mozilla Firefox, Firefox OS等其他众多产品的图形引擎,支持平台还包括Windows, macOS, iOS,Android,Ubuntu等。

Dart 部分主要包括:Dart Runtime,Garbage Collection(GC),如果是Debug模式的话,还包括JIT(Just In Time)支持。Release和Profile模式下,是AOT(Ahead Of Time)编译成了原生的arm代码,并不存在JIT部分。

Text 即文本渲染,其渲染层次如下:衍生自 Minikin的libtxt库(用于字体选择,分隔行);HartBuzz用于字形选择和成型;Skia作为渲染/GPU后端,在Android和Fuchsia上使用FreeType渲染,在iOS上使用CoreGraphics来渲染字体。
Embedder

Embedder是一个嵌入层,通过该层把Flutter嵌入到各个平台上去,Embedder的主要工作包括渲染Surface设置, 线程设置,以及插件等。平台(如iOS)只是提供一个画布,剩余的所有渲染相关的逻辑都在Flutter内部,这就使得它具有了很好的跨端一致性。

文章转载于:https://baijiahao.baidu.com/sid=1677058019872815848&wfr=spider&for=pc,如有侵权,请联系删除~

如何学习Flutter?

这份谷歌开源的《Flutter入门与实战》,希望可以帮助大家用最短时间学习Flutter。教程通俗易懂,实例丰富,既有基础知识,也有进阶技能,能够帮助读门者快速入进阶,快收藏起来!!!

第一章、Flutter基本功能

在这里插入图片描述

第二章、Flutter路由管理

在这里插入图片描述

第三章、Flutter网络请求插件Dio

在这里插入图片描述

第四章、Flutter状态管理

在这里插入图片描述

第五章、Flutter 动画

在这里插入图片描述

总结

现在很多Android开发岗位需要掌握Flutter,面对形势多变的就业环境,人人都希望多掌握一门技术,以致于不会被就业环境淘汰。

这份整理好的《Flutter入门与实战》资料,想要学习的朋友可以点击下方名片免费领取~

Flutter flutter.gradle 简单分析 所有的分析基于当前的 1.4.7 版本,flutter sdk 的版本更新可能会修改这个文件 Flutter 1.4.7 • channel dev • https://github.com/flutter/flutter.git Framework • revision 1bfa2f2311 (3 days ago) • 2019-03-29 10:05:18 -0700 Engine • re... 阅读详情

相关推荐

全面理解-Flutter(万字长文,深度解析)

题外话,我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在IT学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多程序员朋友无法获得正确的资料得到学习提升,故此将并将重要的Android进阶资料包括自定义view、性能优化、MVC与MVP与MVVM三大框架的区别、NDK技术、阿里面试题精编汇总、常见源码分析等录播视频免费分享出来。

2401_85667460的博客 6793

2023年Flutter淡出视野,是正在被悄悄放弃吗?

Flutter 完全没有被放弃的意思,相反Google还不断的更新,年年在进行优化迭代,就在十天前还更新到了3.7。Flutter 是谷歌于 2017 年创建的用户界面工具包,它是一个开源框架,提供完整的小部件、工具等包,用于开发目的。它可用于开发各种应用程序,包括移动、Web、桌面和嵌入式设备。Flutter 不是一种语言,而是一个开发套件,其中包含了软件开发所需的所有必要的库、工具和文档。

大模型训练 1万+

Flutter基础--看完这篇就可以撸App

这篇内容纯干货,手把手一步一步展示,从零到一个完整的app的构建。 上一篇文章已经教大家怎么搭建flutter的环境:传送门 首先看一下我们的我们今天的demo构建出来的是啥样子的 这篇文章我们要讲的东东有 a. layout结构 b. navBar c. tabbar和列表组件的使用 d. http请求JSON数据,并渲染到列表 e. 组件之间的通信 f. 路由(带...

H.A.N的博客 3万+

有人说Flutter马上就要亖了

好了,前面就是我对这些观点的自己的看法总的来说就是现阶段Flutter是跨平台最好的选择长期来看要警惕风险做好容错的准备如果看到这里的同学有学习Flutter的兴趣,欢迎联系老刘,我们互相学习。点击免费领老刘整理的《Flutter开发手册》,覆盖90%应用开发场景。可以作为Flutter学习的知识地图。覆盖90%开发场景的《Flutter开发手册》t=N7T8t=N7T8。

developer_laoliu的博客 1万+

全面理解 Flutter(万字长文,深度解析)

它开辟了新的设计理念,实现了真正的跨平台的方案,自研 UI 框架,它的渲染引擎是 Skia 图形库来实现的,而开发语言选择了同时支持 JIT 和 AOT 的 Dart。谈到 UI 渲染方案,作为前端开发,我们是绕不过现在如火如荼的三大框架的。这里描述一下合成的概念,所谓合成就是因为我们绘制的页面结构复杂,如果直接交付给绘图引擎去进行图层渲染,可能会出现大量的渲染内容重绘,因此,需要先进性一次图层合成,就是说先把所有的图层根据大小、层级等规则计算出最终的显示效果,将相同的图层合并,简化渲染树,提升渲染效率。

2401_84048935的博客 2195

iOS 开发之仿咸鱼初期在老项目引入集成 Flutter【生产中不建议采用此方案】

  【Flutter 环境配置传送门】   1、在工程目录执行如下命令引入 flutter 配置 flutter create -t module flutter_module 补充:添加 flutter 依赖库流程: cd flutter_module vim pubspec.yaml // (编辑 pubspec.yaml(类似于iOS Podfile) 添加需要引入的库,例...

郑亚恒的专栏 4687

Flutter可能会凉凉的7个理由

近期一些文章针对Flutter的发展提出了不少质疑和批评,称其难以成为移动应用开发的“顶流明星”,这些文章中提到了不少问题和缺陷,从技术实现、生态系统、用户体验等方面进行了分析和评价。

finogeeks的博客 2万+

Flutter面临放弃?Android开发者将会受到冲击!

对于那些希望同时在Android和iOS上构建应用程序的开发者来说,Flutter依然是一个非常有吸引力的选择。Flutter是由Google开发的一款跨平台移动应用开发框架,它以其快速、高效和美观的用户界面而闻名。Flutter使用Dart编程语言,并且具有自己的渲染引擎,可以直接绘制应用程序的用户界面,而不依赖于操作系统的原生界面组件。然而,我们需要对这一问题进行深入的分析和了解,才能得出准确的结论。最重要的是,保持对移动应用开发领域的关注,随着技术的发展不断学习和适应新的工具和框架。

ZrilKwargs的博客 2415

Google要放弃Flutter?跨端方案以后还能怎么做?

在这些平台下只要开发者写一个小程序,这个小程序既可以运行在苹果的微信中、也可以运行在安卓的微信中、也可以给使用鸿蒙微信的用户使用。通过 FinClip 生成的 App 不光可以运行自己的小程序,如果你的公司有合作伙伴,也可以把让他们的小程序也集成进来。但是问题来了,很多公司都想有自己的 App,那如何拥有一个可以在鸿蒙、iOS、Android等各种平台都能兼容运行的应用,能让小程序脱离微信运行到自己的应用里呢?相比 H5,小程序容器的优势是在于和原生代码之间的互相调用,所以调用原生的能力也是很重要的。

kangbin825的专栏 3516

【Flutter】Flutter 切换语言 当前页面不刷新

虽然 Flutter 默认的做法是刷新整个应用,但是我们可以通过使用 StatefulWidget 和 setState 来改变这一行为。

Code Metaverse 1469

基于Arduino的智能垃圾桶

通过本次简单的Arduino智能垃圾桶小实验可以快速了解Arduino的基本用法 1、材料准备 Arduino UNO HC-SR04超声波模块 SG90舵机 杜邦线 电源 电脑 2、代码分析 电机的控制 #include<Servo.h> #define duoji D5 Servo myduoji; void setup() { myduoji.attach(duoji); //舵机连接 Serial.begin(115200); } void loop() { myduoji.w

weixin_41679960的博客 1万+

Flutter 到底能不能成为“跨平台开发终极之选”?

前言 移动互联网进入下半场,出现一些新兴互联网独角兽、小巨头,在没有历史包袱的情况下,更愿意尝试技术上限更高的新技术。 跨平台技术在任何情况下都不能被忽视,尤其是 Flutter 这种跨平台能力,学习一门语言,写一次代码就可以生成 Android、iOS app,而且官方还对 Web、Window、Mac 等平台进行支持。 一旦非常稳定,这样的开发效率实在是太恐怖了,一个人就能有双倍的效率。 Flutter 到底能不能成为“跨平台开发终极之选”? 1. Flutter 正在被越来越多的 App 所使用 .

Android_XG的博客 1730

一文带你看懂SAP-HANA的基本架构与原理

创作不易,希望大家一键三连支持!!!♥♥♥创作不易,希望大家一键三连支持!!!♥♥♥创作不易,希望大家一键三连支持!!!♥♥♥。

丷江南南的博客 5077

Flutter 到底能不能成为跨平台开发终极之选?

跨端技术是Android程序员乃至所有移动开发程序员一直在研究的课题。 3月4日,谷歌正式发布了 Flutter 的 2.0。该版本最大的特性就是可以支持五大主流的操作系统:iOS、Android、Linux、Windows 和 MacOS。官方甚至还说丰田将会把 Flutter 带到汽车中。 也就是说,我们可以用一套 Flutter 代码适配全平台了。 同时间,开发社区讨论炸开了锅:Flutter 到底能不能成为跨平台开发终极之选?Flutter不是正在被放弃吗? 相信很多人心中都有上面这些疑惑,今天我们

初一十五的博客 1774

STM32F407通过SMBus协议精准读取BQ40Z50电池电量

本文详细介绍了STM32F407通过SMBus协议精准读取BQ40Z50电池电量的实现方法。从硬件连接到软件驱动开发,再到通信异常排查,提供了完整的解决方案。重点解析了SMBus协议的特殊时序要求、GPIO模拟驱动的关键代码,以及实际调试中的常见问题与对策,帮助开发者高效完成电池管理系统开发。

weixin_29189003的博客 253

从无人机到机械臂:深入聊聊LQR和LQG在实际项目里的那些‘坑’与最佳实践

本文深入探讨了LQR和LQG在无人机和机械臂等实际项目中的应用挑战与最佳实践。从系统建模的妥协艺术到调参的系统化方法,再到离散化的细节处理,文章分享了工程实践中的宝贵经验。特别强调了如何应对传感器噪声、未建模动态等现实问题,并提供了实用的调试工具和诊断流程,帮助工程师避免常见陷阱,提升控制系统的稳定性和性能。

weixin_28683391的博客 387

Apple为什么不封杀 Flutter,以后会封杀吗

概述 Flutter是什么?Flutter是Google推出的一套开源跨平台UI框架,可以快速地在Android、iOS和Web平台上构建高质量的原生用户界面。在过去的两年时间里,Flutter的更新频率是相当的快,也有很多的公司开始使用它来进行跨平台应用开发,可以说,将Flutter称为2019年最流行的跨平台技术也不为过。 作为一个移动互联网的老兵,我先后研究过Hybrid APP、React...

xiangzhihong8的专栏 4805

手把手教你学simulink(16.10)-- 基于Simulink的IIR滤波器(Infinite Impulse Response Filter)项目

基于Simulink的IIR滤波器(Infinite Impulse Response Filter)项目的详细实例介绍。这个项目将重点放在IIR滤波器的设计、实现和仿真上,帮助你理解和应用IIR滤波器在信号处理中的作用。

MHD0815的博客 706

全面理解 Flutter

当 Flutter 遇见 Web,会有怎样的秘密? 在线教育团队(简称:OED)已经将 Flutter 这样技术在业务中落地了,做为 IMWeb 前端团队的我们也要进行一些尝试。本文从前端角度进行 Flutter 开发的概况描述。主要是为了让您了解和感受一下:Flutter to Web 的实例、Flutter 为什么会出现、Flutter 设计实现原理、Flutter 技术特点和优势。 前言 OED的客户端团队在 2019 年上半年 ,就已经把 Flutter 落地到企鹅辅导的业务中了。今年我们

大灰狼的小绵羊哥哥的博客 668

11、Windows Autopilot 部署与设备注册全攻略

本文详细介绍了Windows Autopilot的完整部署流程,涵盖注册配置文件设置、注册状态页面(ESP)配置、设备注册方法(包括CSV导入、JSON注入、在线注册等)、自动化脚本实现及故障排除技巧。通过手动与PowerShell自动化两种方式指导用户完成配置,并提供流程图、最佳实践和常见问题解答,帮助IT管理员高效实现设备零接触部署与管理。

ii567的博客 343

YOLOv11 改进 - 注意力机制 | GC Block(GlobalContext Block)全局上下文块:三重变换捕获全局依赖,提升复杂场景鲁棒性

本文介绍了全局上下文块(GC Block)及其在YOLOv11中的集成应用。GC Block是GCNet的核心组件,结合了NLNet和SENet的优势,通过上下文建模、特征变换和特征融合三个模块,高效捕获特征图中的全局依赖关系,在提高模型性能的同时降低计算成本。我们将GC Block引入YOLOv11,在检测头部分的不同尺度特征图上应用该模块。实验表明,改进后的YOLOv11在目标检测任务中表现良好,展现了GC Block在实际应用中的价值。

魔改工程师的博客 953

Flutter三棵树理解

目录介绍 01.Flutter三棵树背景 02.Flutter中的三棵树 03.Flutter三棵树关系 04.运行时三棵树结构 05.三棵树的作用介绍 Flutter三棵树背景 1.1 先思考一些问题 Widget与Element是什么关系?它们是一一对应的还是怎么理解? createState 方法在什么时候调用?state 里面为啥可以直接获取到 widget 对象? Widget 频繁更改创建是否会影响性能?复用和更新机制是什么样的? Widget、Element、RenderObject 三

杨充 5207

GMSL转eDP芯片MAX9686X(ADI)

MAX96860/MAX96862/MAX96864解串器可以把单路或双路GMSL转换成eDP V1.4a,支持820MHzPCLK的无压缩的24bpp(每个像素的位数)视频,或660MHz的30bpp视频。芯片的GMSL支持NRZ编码的6Gbps/187Mbps的GMSL2,PAM4编码的12Gbps/187Mbps的GMSL3。同时支持单线(COAX模式)双向全双工传输控制数据和video数据。支持DSC压缩的芯片,最大支持像素时钟1080MHz@24bpp或者864MHz@30bpp,传输方式包括同轴

qflook的博客 2851

看完227篇技术文,总结出一份 Flutter 入门教程

本文致力于整理 Flutter 的入门的文章。作为自己学习 Flutter 的学习笔记。同时希望这篇文章能帮助小伙伴入门 Flutter 。 Flutter 简介 如果你第一次接触 Flutter ,你应该从简介开始,在简介中你可以了解到 Flutter 是什么,有哪些优点。 Flutter 和其他的跨平台框架的差异……。总之,它能更好的带你初步了解Flutter。 为什么原生应用开发者需要关注 Flutter 如果你是 iOS、Android 的原生开发者,那你应该看一下这篇文章,这篇文章清晰的说明了为什

AI大模型的博客 1948

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Flutter_thrio源码解析:深入理解Flutter混合栈框架设计原理

Flutter_thrio是一个功能强大的Flutter混合栈框架,它能够帮助开发者轻松快速地将Flutter集成到现有的移动应用中,并提供简单一致的导航API。无论是新手还是有经验的开发者,都能通过Flutter_thrio构建出色的混合应用。 ## 为什么选择Flutter_thrio? 在移动应用开发中,混合栈架构越来越受到青睐。它允许开发者在同一个应用中同时使用原生代码和Flutter

gitblog_00086的博客 814

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

一文彻底理解Flutter布局约束

文章目录前言约束布局规则重要的限制样例解释样例1样例2样例3样例4样例5样例6样例7样例8样例9样例10样例11样例12样例13样例14样例15样例16样例17样例18样例19样例20样例21样例22样例23样例24样例25样例26样例27样例28样例29严格约束(Tight)VS宽松约束(Loose) 前言 我们在写Flutter UI的时候,经常碰到明明widget设置width或者height,但是看上去就是无效呢。明明没有设置某个widget的大小,反而却呈现出我们想要的大小。又或者是各种莫名奇妙的

人生百年几今日,今日不为真可惜。 3069

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

上一篇: Android 一种点赞动画的实现
下一篇: Android Jetpack Compose 超快速上手指南
不秃头de程序猿
博客等级 码龄5年 4089粉丝 1478原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值