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

相关文章

Java学习手册之Filter和Listener使用方法

《Java学习手册之Filter和Listener使用方法》:本文主要介绍Java学习手册之Filter和Listener使用方法的相关资料,Filter是一种拦截器,可以在请求到达Servl... 目录一、Filter(过滤器)1. Filter 的工作原理2. Filter 的配置与使用二、Listen

一文带你搞懂Python中__init__.py到底是什么

《一文带你搞懂Python中__init__.py到底是什么》朋友们,今天我们来聊聊Python里一个低调却至关重要的文件——__init__.py,有些人可能听说过它是“包的标志”,也有人觉得它“没... 目录先搞懂 python 模块(module)Python 包(package)是啥?那么 __in

Flutter打包APK的几种方式小结

《Flutter打包APK的几种方式小结》Flutter打包不同于RN,Flutter可以在AndroidStudio里编写Flutter代码并最终打包为APK,本篇主要阐述涉及到的几种打包方式,通... 目录前言1. android原生打包APK方式2. Flutter通过原生工程打包方式3. Futte

Python Dash框架在数据可视化仪表板中的应用与实践记录

《PythonDash框架在数据可视化仪表板中的应用与实践记录》Python的PlotlyDash库提供了一种简便且强大的方式来构建和展示互动式数据仪表板,本篇文章将深入探讨如何使用Dash设计一... 目录python Dash框架在数据可视化仪表板中的应用与实践1. 什么是Plotly Dash?1.1

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应

Python GUI框架中的PyQt详解

《PythonGUI框架中的PyQt详解》PyQt是Python语言中最强大且广泛应用的GUI框架之一,基于Qt库的Python绑定实现,本文将深入解析PyQt的核心模块,并通过代码示例展示其应用场... 目录一、PyQt核心模块概览二、核心模块详解与示例1. QtCore - 核心基础模块2. QtWid

最新Spring Security实战教程之Spring Security安全框架指南

《最新SpringSecurity实战教程之SpringSecurity安全框架指南》SpringSecurity是Spring生态系统中的核心组件,提供认证、授权和防护机制,以保护应用免受各种安... 目录前言什么是Spring Security?同类框架对比Spring Security典型应用场景传统

Java进阶学习之如何开启远程调式

《Java进阶学习之如何开启远程调式》Java开发中的远程调试是一项至关重要的技能,特别是在处理生产环境的问题或者协作开发时,:本文主要介绍Java进阶学习之如何开启远程调式的相关资料,需要的朋友... 目录概述Java远程调试的开启与底层原理开启Java远程调试底层原理JVM参数总结&nbsMbKKXJx

Python结合Flask框架构建一个简易的远程控制系统

《Python结合Flask框架构建一个简易的远程控制系统》这篇文章主要为大家详细介绍了如何使用Python与Flask框架构建一个简易的远程控制系统,能够远程执行操作命令(如关机、重启、锁屏等),还... 目录1.概述2.功能使用系统命令执行实时屏幕监控3. BUG修复过程1. Authorization

无需邀请码!Manus复刻开源版OpenManus下载安装与体验

《无需邀请码!Manus复刻开源版OpenManus下载安装与体验》Manus的完美复刻开源版OpenManus安装与体验,无需邀请码,手把手教你如何在本地安装与配置Manus的开源版OpenManu... Manus是什么?Manus 是 Monica 团队推出的全球首款通用型 AI Agent。Man