Flutter 作为谷歌的开源框架到底有何可取之处?我们又该如何学习?

2023-12-11 03:10

本文主要是介绍Flutter 作为谷歌的开源框架到底有何可取之处?我们又该如何学习?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

首先我们来了解下什么是 Flutter ?

谷歌官方解释:

Flutter 是谷歌的移动 UI 框架,可以快速在 iOS 和 Android 上构建高质量的原生用户界面

一份代码可以同时生成 iOS 和 Android 两个高性能、高保真的应用程序

  • Flutter 目标就是使开发人员能够交付在不同平台上都感觉自然流畅高性能应用程序,并且兼容 滚动行为、排版、图标等方面的差异

  • Flutter 的开发语言是 Dart,如果您使用过 Java 或 JavaScript 之类的语言,则能够很快上手,甚至有一些 Flutter 应用是没有编程经验的人写的

现如今,Flutter 已经被越来越多的开发者和组织使用,并且 Flutter 是完全免费、开源的

下面是一张 Flutter 框架结构图

从图中我们可以看出 Flutter 的架构主要分成三层: 分别是 Framework , Engine 和 Embedder

Framwork

这一层纯 Dart 实现,使用了两种设计风格 Material Design 和 Cupertino (针对iOS) 风格

  • Widgets 层: 一套基础组件库
  • Rendering 层: UI 布局渲染
  • Animation、Painting、Gestures、Foundation 是 Dart: UI 库提供的对接底层动画,手势识别等功能
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 嵌入到各个平台上去,引擎移植到平台的中间层代码 渲染设置,原生插件,打包,线程管理,事件循环交互操作

Flutter的优势在哪里?

开发效率高

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

富有表现力和灵活的UI

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

原生性能

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

Flutter 要学吗?

Flutter 于谷歌而言,这是他们重新整理 跨平台生态环境 决心的体现,Flutter 所展现的内容,也是谷歌想拓展和维护的方向;对于长期苦恼于 跨平台 选择的广大 Android 开发者 而言,Flutter 可谓是谷歌为我们提供的 指路明灯

也许,Flutter 系列的部分库还没成熟到成为你工作的第一选择,但是,深入学习 Flutter 组件会为你提供与谷歌大佬深入交流的机会,为你日常的开发带来一些想法

总的来说,Flutter 对广大开发者而言是 利远远大于弊的

该如何去学习 Flutter?

关于 Flutter 的文档资料 在网上其实有很多,但大多 杂而不精,并不能给提供一个 好的学习方向; 所以为了让大家对 Flutter 有充分的了解, 特提供一份 Flutter 开发工程师 思维导图并通过思维导图;融合这些年的工作经历和网上的资料查询,最终将其整合了成了一个 Flutter 学习笔记; 需要 完整版 Flutter 学习笔记 的朋友:现在 私信 发送 “笔记” 即可 免费获取希望大家通过阅读这份学习笔记,能够查漏补缺

Flutter 开发工程师思维导图

下面是通过该思维导图为依据,再对这些年的工作经历的融合和网上的资料查询整理,最终将其整合了成了一个 Flutter 学习笔记

内容展示如下:

Dart 语法基础
  • Dart 语法详解
  • 编译原理
  • Dart 语言基础详解(变量、内置类型、函数、操作符、流程控制语句)
  • Flutter(Dart)基础——类的详解
  • Dart 初始化列表
  • Dart 的构造方法及属性(setter/getter)
  • Dart 构造方法
  • Dart 的工厂构造方法
  • Dart 之 Mixin 详解

Dart 语法进阶
  • Exception 类型
  • Error 类型
  • 异常抛出
  • 异常捕获
  • 泛型
  • 异步

完整版 Flutter 学习笔记 获取方式: 私信 发送 “笔记” 即可 免费获取
Flutter 3.0 之 UI
  • 列表和网格视图 Widget
  • 布局 Widget
  • AbsListView 常用属性和相关方法
  • 常用适配器介绍与使用
  • ListView 详细介绍与使用
  • GridView 详解与应用
  • GridView 主要使用方法
  • GridView 使用 Demo
  • 布局 Widget

Flutter 3.0 线程
  • Flutter 事件队列
  • 应用场景
  • 实现思路
  • 具体实现
  • async await 原理解析
  • Future Dart 的消息循环机制
  • 最常用的 async 和 await
  • Promise 对象的基本用法
  • Flutter 多线程

完整版 Flutter 学习笔记 获取方式: 私信 发送 “笔记” 即可 免费获取
Flutter 3.0 项目实战
  • Flutter 底部导航路由实现
  • 底部导航实现
  • Widget 属性说明
  • Page 存在重复创建的问题
  • Flutter 创建侧滑菜单
  • 个人中心制作
  • 简单个人中心
  • 商城会员中心
  • Flutter 实战 APP 入门及主页

Flutter 启动流程
  • Dart 虚拟机
  • Dart 虚拟机与 JVM 虚拟区别
  • Dart 虚拟机启动
  • Dart isolate 机制
  • Skia 引擎
  • Skia 引擎重要类简介
  • Skia 绘图概述 canvas
  • Flutter Activity 启动流程
  • Flutter 应用启动

完整版 Flutter 学习笔记 获取方式: 私信 发送 “笔记” 即可 免费获取

对于程序员来说,要学习的知识内容、技术有太多太多,要想不被环境淘汰就只有不断提升自己,从来都是我们去适应环境,而不是环境来适应我们

技术是无止境的,你需要对自己提交的每一行代码、使用的每一个工具负责,不断挖掘其底层原理,才能使自己的技术升华到更高的层面

最后祝各位开发者早日精通 Flutter ,攀登上更高的高峰

这篇关于Flutter 作为谷歌的开源框架到底有何可取之处?我们又该如何学习?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/479267

相关文章

MyBatis框架实现一个简单的数据查询操作

《MyBatis框架实现一个简单的数据查询操作》本文介绍了MyBatis框架下进行数据查询操作的详细步骤,括创建实体类、编写SQL标签、配置Mapper、开启驼峰命名映射以及执行SQL语句等,感兴趣的... 基于在前面几章我们已经学习了对MyBATis进行环境配置,并利用SqlSessionFactory核

鸿蒙开发搭建flutter适配的开发环境

《鸿蒙开发搭建flutter适配的开发环境》文章详细介绍了在Windows系统上如何创建和运行鸿蒙Flutter项目,包括使用flutterdoctor检测环境、创建项目、编译HAP包以及在真机上运... 目录环境搭建创建运行项目打包项目总结环境搭建1.安装 DevEco Studio NEXT IDE

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

阿里开源语音识别SenseVoiceWindows环境部署

SenseVoice介绍 SenseVoice 专注于高精度多语言语音识别、情感辨识和音频事件检测多语言识别: 采用超过 40 万小时数据训练,支持超过 50 种语言,识别效果上优于 Whisper 模型。富文本识别:具备优秀的情感识别,能够在测试数据上达到和超过目前最佳情感识别模型的效果。支持声音事件检测能力,支持音乐、掌声、笑声、哭声、咳嗽、喷嚏等多种常见人机交互事件进行检测。高效推

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

金融业开源技术 术语

金融业开源技术  术语 1  范围 本文件界定了金融业开源技术的常用术语。 本文件适用于金融业中涉及开源技术的相关标准及规范性文件制定和信息沟通等活动。