当前位置: 首页 > news >正文

Flutter 简述(1)

Flutter 简述

简述

Flutter是Google开源的应用框架,只要一套代码兼顾Android、iOS、Web、Windows、macOS和Linux六个平台,它的设计思路可以说更加先进,不像ReactNative每个组件都需要有对应的原生组件实现,而是通过skia或者其他的渲染引擎来直接渲染画面,Flutter使用dart虚拟机来实现跨平台管理UI。
在dart上,会通过Widget构建Element,然后Element会构建RendorObject,然后RendorObject渲染的时候通过canvas来调用底层渲染引擎做最终的绘制。
直接使用渲染引擎来实现跨平台UI渲染,当需要实现复杂定制化UI时,我们依旧只需要实现一套UI,不需要在每个平台使用一个原生组件单独实现,切在性能方面也会有更好的表现,相当于节约了原生层面UI管理的工作量。

框架结构

  • dart虚拟机
    Flutter的UI是使用dart实现的,也是通过dart来实现跨平台,dart语言和kotlin比较相似,所以对于Android应用开发的同学,上手Flutter还是比较简单的。
    dart语言可以编译成各个平台的二进制程序,也可以编译成各个JS。且dart即可以支持JIT编译模式,也支持AOT编译模式。JIT编译模式可以支撑Flutter热加载,而AOT可以编译成可预期高效的程序,作为UI渲染使用更多语言,可预期是很重要的,需要稳定,否则就会出现掉帧。
  • 渲染引擎
    早期的Flutter使用的渲染引起是skia,Android之前也是使用skia来处理2D渲染。后面Flutter推出了Impeller,Impeller是Flutter推出的渲染引擎。Impeller是专门为Flutter设计的渲染引擎,支持使用OpenGL和Vulkan,优化了渲染流程以及对GPU对使用效率。

涉及内容

Flutter的架构很简单,就是使用dart来统一语言平台,然后使用渲染引擎绘制UI,所以我们主要来研究一下dart层的逻辑,学习一下Flutter是怎么实现UI的管理,包括Touch事件传递,与其他模块交互等等。

  • Flutter 启动流程
  • Flutter UI构建
  • Flutter 渲染
  • Flutter Touch事件传递
  • 。。。

相关文章:

Flutter 简述(1)

Flutter 简述 简述 Flutter是Google开源的应用框架,只要一套代码兼顾Android、iOS、Web、Windows、macOS和Linux六个平台,它的设计思路可以说更加先进,不像ReactNative每个组件都需要有对应的原生组件实现,而是通过skia或者其他…...

BGP实验--BGP路由反射器

AR1、AR2上的Loopback 1接口分别为10.1.1.1/24、10.2.2.2/24,用于模拟用户网段 所有设备均使用Loopback 0地址为BGP Router ID,AR1与AR2、AR2与AR3、AR3与AR4、AR4与AR2之间基于直连接口建立IBGP对等体关系,其中AR1为AR2的路由反射器客户端&a…...

域渗透-域环境部署

01-域渗透部署 一、工作组和域 1、为什么需要域 在早期Windows主机都是属于工作组网络,单独的个体,在企业环境中,针对于工作组网络的计算机要达到统一管理相当麻烦,为实现将一个企业中所有的用户和计算机进行集中管理&#xff…...

【Oracle】空格单字符通配符查询匹配失败

问题 在进行模糊查询的时候,通过全局任意字符串匹配出含有两个字刘姓的人,但是通过刘_不能匹配出结果。 解决 检查后发现,姓名中包含空格 SELECT * FROM student WHERE TRIM(sname) LIKE 刘_;第一种解决方案就是查询的时候进行去空格处理&a…...

uniapp实现中间平滑凸起tabbar

uniapp实现中间平滑凸起tabbar 背景实现思路代码实现尾巴 背景 在移动端开发中,tabar是一个使用频率很高的组件,几乎是每个APP都会用到。今天给大家分享一个中间平滑凸起的tabbar组件,有需要的可以做下参考。先上图镇楼: 实现思…...

【视频】OpenCV:识别颜色、绘制轮廓

1、安装OpenCV库 sudo apt install libopencv-dev2、链接库 将 OpenCV 头文件路径和库添加到CMake中,在 CMakeLists.txt 中添加 1)查找库 find_package(OpenCV REQUIRED) 或者 find_package(OpenCV REQUIRED core imgproc highgui) 2)添加头文件路径 include_directories…...

C++_STL_xx_番外01_关于STL的总结(常见容器的总结;关联式容器分类及特点;二叉树、二叉搜索树、AVL树(平衡二叉搜索树)、B树、红黑树)

文章目录 1. 常用容器总结2. 关联式容器分类3. 二叉树、二叉搜索树、AVL树、B树、红黑树 1. 常用容器总结 针对常用容器的一些总结: 2. 关联式容器分类 关联式容器分为两大类: 基于红黑树的set和map;基于hash表的unorder_set和unorder_ma…...

xlrd.biffh.XLRDError: Excel xlsx file; not supported

文章目录 一、问题报错二、报错原因三、解决思路四、解决方法 一、问题报错 在处理Excel文件时,特别是当我们使用Python的xlrd库来读取.xlsx格式的文件,偶尔会遇到这样一个错误:“xlrd.biffh.XLRDError: Excel xlsx file; not supported”。…...

ENNSP中ACL的实验配置

ACL:访问控制列表 1访问控制----在路由器的入或者出的接口上,匹配流量,之后产生动作---允许或拒绝 2.定义感兴趣流量-----帮助其他软件抓流量 访问控制的匹配规则: 拓扑图如下 基础配置 基础配置弄好后,随便p…...

数字后端零基础入门系列 | Innovus零基础LAB学习Day8

###LAB15 Detail Routing for Signal Integrity, Timing, Power and Design for Yield 这个章节虽然标题有点长,但不要被它吓到,其实这个章节就是Innovus工具的绕线Routing。只不过这个阶段做Route不是仅仅是把所有的逻辑连接,用实际的金属层…...

【AI开源项目】FastGPT- 快速部署FastGPT以及使用知识库的两种方式!

文章目录 一、FastGPT大模型介绍1. 开发团队2. 发展史3. 基本概念 二、FastGPT与其他大模型的对比三、使用 Docker Compose 快速部署 FastGPT1、安装 Docker 和 Docker Compose(1). 安装 Docker(2). 安装 Docker Compose&#xff…...

信息学科平台系统开发:Spring Boot实用指南

3系统分析 3.1可行性分析 通过对本基于保密信息学科平台系统实行的目的初步调查和分析,提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。 3.1.1技术可行性 本基于保密信息学科平台系统采用Spring Boot框架&a…...

笔记本电脑买i7还是i9?i7和i9处理器区别详细介绍

i7和i9处理器都是英特尔(Intel)公司生产的高性能处理器,但它们有一些显著的区别。为了帮助你做出明智的选择,下面我们详细介绍一下i7和i9处理器的区别,以及如何根据你的需求来选择合适的处理器。 一、i7处理器的特点…...

Netty原来就是这样啊(一)

前言: 当前对于整体而言来说就是说分为客户端以及服务端然后服务端接收到客户端的请求之后将客户端想要的结果返回给它,但是这个就需要建立一个连接进行数据的传输除此以外我们是通过网络进行传输的那么就需要网络协议 (TCP UDP),建立的连接就是叫Socket连接 Socket的具体介绍…...

量子容错计算

基本思想 容错量子计算的基本想法是,在合理编码后的量子态上直接量子计算,以至于不完全需要解码操作。假设有一个简单的量子电路,但不幸的是噪声影响着这个电路的每一个元件,包括量子态的制备、量子逻辑门、对输出的测量&#x…...

QGraphics View坐标系

QGraphics View绘图结构依赖三个类:QGraphicsScene,QGraphicsView,QGraphicsItem。 这三者的关系在前面已经介绍过:Graphics View 绘图架构-CSDN博客 这里介绍下这三者的坐标系,以及如何相互转换。 1. QGraphicsScen…...

繁星之下--

在一个宁静的小镇上,年轻的画家阿宁用她的画笔捕捉着四季的变换。这个小镇四季分明,春天的嫩芽、夏天的繁花、秋天的金黄和冬天的白雪,仿佛每一个季节都在向她诉说着自己的故事。阿宁常常在思考,如何将这些美丽的瞬间转化为永恒的…...

Transformer+KAN系列时间序列预测代码

前段时间,来自 MIT 等机构的研究者提出了一种非常有潜力的替代方法 ——KAN。该方法在准确性和可解释性方面表现优于 MLP。而且,它能以非常少的参数量胜过以更大参数量运行的 MLP。 KAN的发布,引起了AI社区大量的关注与讨论,同时…...

vue项目安装组件失败解决方法

1.vue项目 npm install 失败 删除node_modules文件夹、package-lock.json 关掉安装对话框 重新打开对话框 npm install...

C++ [项目] 躺平发育

一、基本介绍 支持Dev-C5.11版本(务必调为英文输入法),基本操作看游戏里的介绍,怎么做的……懒得说,能看懂就看注释,没有的自己猜,如果你很固执……私我吧 二、代码部分 #include<bits/stdc.h> #include<windows.h> #include<unistd.h> using namespace st…...

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周&#xff0c;有很多同学在写期末Java web作业时&#xff0c;运行tomcat出现乱码问题&#xff0c;经过多次解决与研究&#xff0c;我做了如下整理&#xff1a; 原因&#xff1a; IDEA本身编码与tomcat的编码与Windows编码不同导致&#xff0c;Windows 系统控制台…...

变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析

一、变量声明设计&#xff1a;let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性&#xff0c;这种设计体现了语言的核心哲学。以下是深度解析&#xff1a; 1.1 设计理念剖析 安全优先原则&#xff1a;默认不可变强制开发者明确声明意图 let x 5; …...

突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合

强化学习&#xff08;Reinforcement Learning, RL&#xff09;是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程&#xff0c;然后使用强化学习的Actor-Critic机制&#xff08;中文译作“知行互动”机制&#xff09;&#xff0c;逐步迭代求解…...

R语言AI模型部署方案:精准离线运行详解

R语言AI模型部署方案:精准离线运行详解 一、项目概述 本文将构建一个完整的R语言AI部署解决方案,实现鸢尾花分类模型的训练、保存、离线部署和预测功能。核心特点: 100%离线运行能力自包含环境依赖生产级错误处理跨平台兼容性模型版本管理# 文件结构说明 Iris_AI_Deployme…...

从零实现富文本编辑器#5-编辑器选区模型的状态结构表达

先前我们总结了浏览器选区模型的交互策略&#xff0c;并且实现了基本的选区操作&#xff0c;还调研了自绘选区的实现。那么相对的&#xff0c;我们还需要设计编辑器的选区表达&#xff0c;也可以称为模型选区。编辑器中应用变更时的操作范围&#xff0c;就是以模型选区为基准来…...

解锁数据库简洁之道:FastAPI与SQLModel实战指南

在构建现代Web应用程序时&#xff0c;与数据库的交互无疑是核心环节。虽然传统的数据库操作方式&#xff08;如直接编写SQL语句与psycopg2交互&#xff09;赋予了我们精细的控制权&#xff0c;但在面对日益复杂的业务逻辑和快速迭代的需求时&#xff0c;这种方式的开发效率和可…...

[10-3]软件I2C读写MPU6050 江协科技学习笔记(16个知识点)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16...

反射获取方法和属性

Java反射获取方法 在Java中&#xff0c;反射&#xff08;Reflection&#xff09;是一种强大的机制&#xff0c;允许程序在运行时访问和操作类的内部属性和方法。通过反射&#xff0c;可以动态地创建对象、调用方法、改变属性值&#xff0c;这在很多Java框架中如Spring和Hiberna…...

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...

【JavaWeb】Docker项目部署

引言 之前学习了Linux操作系统的常见命令&#xff0c;在Linux上安装软件&#xff0c;以及如何在Linux上部署一个单体项目&#xff0c;大多数同学都会有相同的感受&#xff0c;那就是麻烦。 核心体现在三点&#xff1a; 命令太多了&#xff0c;记不住 软件安装包名字复杂&…...