Code For Better 谷歌开发者之声——Flutter - Google 开源的移动 UI 框架

news/2024/4/29 3:05:09/文章来源:https://blog.csdn.net/m0_63947499/article/details/126796932

写在前面

如今,人们都希望自己手机里的应用又漂亮的设计,顺滑的动画以及优异的功能,为了做到这些,开发者们需要在不妥协质量和性能的前提下,更快速地推进新功能的研发,这就是Flutter的核心。

在这里插入图片描述

文章目录

  • 写在前面
  • Flutter是什么?
  • Flutter的安装
  • 示例代码
  • 框架结构


Flutter是什么?

  • Flutter介绍

Flutter是Google开源的构建用户界面(UI)工具包,帮助开发者通过一套代码库高效构建多平台精美应用,支持移动、Web、桌面和嵌入式平台。 Flutter 开源、免费,拥有宽松的开源协议,适合商业项目。Flutter已推出稳定的2.0版本。
在这里插入图片描述


Flutter的安装

安装环境

export PUB_HOSTED_URL=https://pub.flutter-io.cn
export FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn

## 检测环境是否安装成功
$flutter doctor
## 开发工具
android studio
visual studio code

示例代码

我们就用最简单的Hello World!来给大家示例"

import 'package:flutter/material.dart';
void main() {runApp(new Center(child: new Text('Hello World!')));
}

在Dart2.0版本之后,可以省略new。

import 'package:flutter/material.dart';
void main() {runApp(Center(child: Text('Hello World!')));
}

在编写app时,通常会创建独立组件,是继承无状态的StatelessWidget还是有状态的StatefulWidget, 取决于您的组件是否需要管理状态。组件的主要工作是实现一个build函数,它使用其他低级别的组件来构建自己。Flutter框架将依次构建这些组件,最终会到达代表底层渲染对象的组件-RenderObject,它会计算并描述组件的几何形状。
在这里插入图片描述


框架结构

我们看一下 Flutter 官方提供的 Flutter 框架图,如图1-1所示:

图1-1

简单来讲,Flutter 从上到下可以分为三层:框架层、引擎层和嵌入层,下面我们分别介绍:

1. 框架层

Flutter Framework,即框架层。这是一个纯 Dart实现的 SDK,它实现了一套基础库,自底向上,我们来简单介绍一下:

  • 底下两层(Foundation 和 Animation、Painting、Gestures)在 Google 的一些视频中被合并为一个dart UI层,对应的是Flutter中的dart:ui包,它是 Flutter Engine 暴露的底层UI库,提供动画、手势及绘制能力。

  • Rendering 层,即渲染层,这一层是一个抽象的布局层,它依赖于 Dart UI 层,渲染层会构建一棵由可渲染对象的组成的渲染树,当动态更新这些对象时,渲染树会找出变化的部分,然后更新渲染。渲染层可以说是Flutter 框架层中最核心的部分,它除了确定每个渲染对象的位置、大小之外还要进行坐标变换、绘制(调用底层 dart:ui )。

  • Widgets 层是 Flutter 提供的的一套基础组件库,在基础组件库之上,Flutter 还提供了 Material 和 Cupertino 两种视觉风格的组件库,它们分别实现了 Material 和 iOS 设计规范。

Flutter 框架相对较小,因为一些开发者可能会使用到的更高层级的功能已经被拆分到不同的软件包中,使用 Dart 和 Flutter 的核心库实现,其中包括平台插件,例如camera(opens new window)webview (opens new window),以及和平台无关的功能,例如 animations(opens new window)

我们进行Flutter 开发时,大多数时候都是和 Flutter Framework 打交道。

2. 引擎层

Engine,即引擎层。毫无疑问是 Flutter 的核心, 该层主要是 C++ 实现,其中包括了 Skia 引擎、Dart 运行时、文字排版引擎等。在代码调用 dart:ui库时,调用最终会走到引擎层,然后实现真正的绘制和显示。

3. 嵌入层

Embedder,即嵌入层。Flutter 最终渲染、交互是要依赖其所在平台的操作系统 API,嵌入层主要是将 Flutter 引擎 ”安装“ 到特定平台上。嵌入层采用了当前平台的语言编写,例如 Android 使用的是 Java 和 C++, iOS 和 macOS 使用的是 Objective-C 和 Objective-C++,Windows 和 Linux 使用的是 C++。 Flutter 代码可以通过嵌入层,以模块方式集成到现有的应用中,也可以作为应用的主体。Flutter 本身包含了各个常见平台的嵌入层,假如以后 Flutter 要支持新的平台,则需要针对该新的平台编写一个嵌入层。


在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_6229.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【转】VS2019 安装完成之后再安装其它功能模块组件安装

VisualStudio2019安装完成之后,由于开发需求需要安装其它模块或组件,点击工具,选择获取工具和功能,进行选择安装。 做个笔记随笔记录一下。选择需要的模块进行即可。【转自】https://www.cnblogs.com/jiayan1578/p/13665423.html

网络抖动了解

转自:https://blog.csdn.net/W_317/article/details/112801222, https://zhuanlan.zhihu.com/p/403614008 1.网络抖动 指网络中的延迟是指信息从发送到接收经过的延迟时间,一般由传输延迟及处理延迟组成; 抖动=最大延迟-最小延迟 如访问一个网站的最大延迟是20毫秒,最小延迟…

【转载】预测算法--时间序列(ARIMA)模型

ARIMA:AutoregressiveIntegratedMovingAverage model。自回归差分移动平均模型(p,d,q),可以说AR自回归模型,MA移动平均模型,ARMA自回归移动平均模型都是ARIMA的特殊形式. 时间序列模型一般性步骤包括:1. 数据平稳性检验;2. 确定模型参数;3. 构建时间序列模型;4.模型预测…

STM32二十:OLED和LCD

一.概述 1.OLED介绍 1 //OLED的显存2 //存放格式如下.3 //[0]0 1 2 3 ... 127 4 //[1]0 1 2 3 ... 127 5 //[2]0 1 2 3 ... 127 6 //[3]0 1 2 3 ... 127 7 //[4]0 1 2 3 ... 127 8 //[5]0 1 2 3 ... 127 9 //[6]0 1 2 3 ... 127 10 //[7]0 1 2 3 ... 127 …

一.xv6环境搭建

内容大致来源:1.视频教程:https://space.bilibili.com/16765968/channel/collectiondetail?sid=86878 2.文档:https://tarplkpqsm.feishu.cn/docs/doccnoBgv1TQlj4ZtVnP0hNRETd#W8iZmH一.windows升级为专业版注意:docker支持Windows 10 操作系统专业版,所以要升级windows…

【ASP.NET Core】自定义Session的存储方式

在开始今天的表演之前,老周先跟大伙伴们说一句:“中秋节快乐”。 今天咱们来聊一下如何自己动手,实现会话(Session)的存储方式。默认是存放在分布式内存中。由于HTTP消息是无状态的,所以,为了让服务器能记住用户的一些信息,就用到了会话。但会话数据毕竟是临时性的,不…

MySQL-3-多表查询和事务(结合案例学习)

我们之前在讲解SQL语句的时候,讲解了DQL语句,也就是数据查询语句,但是之前讲解的查询都是单表查询,而本章节我们要学习的则是多表查询操作,主要从以下几个方面进行讲解。 多表查询多表查询多表关系分类连接查询内连接隐…

【数据结构】绪论

文章目录 1. 绪论 1.1 概述 1.2 数据与数据结构 1.2.1 术语 1.2.2 逻辑结构 1.2.3 存储结构: 1.2.4 数据操作: 1.3 算法 1.3.1 算法特性 1.3.2 算法目标 1.3.3 算法分析:概述 1.3.4 算法分析:时间复杂度(大…

Markdown笔记软件之 Obsidian

我使用过什么markdown笔记软件了解自己的需求 Markdown 语法简洁vscode内置 markdown 插件,预览等 snippet(摘要功能)自定义代码片段typero实时渲染,所见即所得 美观缺点不适合我个人 收费 不支持打标签 tag 放弃:解决不了我的痛点(全键盘),收费 不支持移动端joplin支持 v…

模拟用户登录功能的实现以及演示SQL注入现象

模拟用户登录功能的实现以及演示SQL注入现象 /* 实现功能:1、需求:模拟用户登录功能的实现。2、业务描述:程序运行的时候,提供一个输入的入口,可以让用户输入用户名和密码用户输入用户名和密码之后,提交信息…

Day07__面向对象

面向对象 什么是面向对象回顾方法的定义 package objectOriented;import java.io.IOException;//回顾方法的定义 public class Demo01 {public static void main(String[] args) {}public static String sayHello(){return "Hello,World!";}public int max(int a,int…

Deno 会取代NodeJS吗?

目标:了解Deno的学习价值和前景。 从下面几个维度进行分析 成熟度 Node已经在大量商业应用中,Deno只是还在商业试验阶段 生态 Node已经有丰富的生态,包含各种框架和库,并且都已经广泛应用Deno的框架和库基本上都是刚刚起步 学习成本 如果你已经了解Node,Deno也还是需要不…

基于蜜蜂算法求解电力系统经济调度(Matlab代码实现)

目录 1 蜜蜂优化算法 1.1 蜂群觅食机制 1.2 蜜蜂算法 1.3 流程 2 经济调度 3 运行结果 4 Matlab代码及文章 5 参考文献 6 写在最后 1 蜜蜂优化算法 蜜蜂算法( Bees Algorithm,BA) 由英国学者 AfshinGhanbarzadeh 和他的研究小组于 2005 年提出。该算法是一…

element table 列头和行高调整

1、行高调整<el-table :row-style="{height:0}"></el-table>2、列头高度调整<el-table :header-cell-style="{padding:0}" :row-style="{height:0}"></el-table>

都这麽大了还不了解防火墙?

目录 一、思考 二、实验 三、过程 1、实验拓扑 2、cloud-IO配置 3、防火墙配置 3.1 登录防火墙 4、区域划分 方法一 方法二 4.1 内网划分 4.2 各区域网关 4.3 区域配置 5、防火墙策略 5.1 允许-回程路由&#xff08;内网~外网&#xff09; 5.2 禁止-新建策略…

AI作画飞入平民百姓家——stable diffusion初体验

1. 前言 stable_diffusion来了&#xff0c;这个号称是最强的民用文本生成图片的模型它来了&#xff0c;相比较DAEE等大模型&#xff0c;它能够让我们消费级的显卡也能够实现文本到图像的生成。下面&#xff0c;我们也来试一下。 2. 准备过程 该服务器上必须要有的基础工具an…

[基于瑞芯微RV1126调试RTL8818FU WIFI模组支持STA和AP模式]

基于瑞芯微RV1126调试RTL8818FU WIFI模组支持STA和AP模式内核menuconfig配置内核dts配置文件系统配置和更改驱动编译wifi工具编译libnl库编译openssl编译wpa_supplicant编译hostapd编译开机运行脚本测试WIFI—STA模式运行脚本测试WIFI-AP模式内核menuconfig配置 CONFIG_NETFIL…

高光谱图像分类简述+《Deep Learning for Hyperspectral Image Classification: An Overview》综述论文笔记

论文题目《Deep Learning for Hyperspectral Image Classification: An Overview》 论文作者:Shutao Li, Weiwei Song, Leyuan Fang,Yushi Chen, Pedram Ghamisi,Jn Atli Benediktsson 论文发表年份:2019 一、高光谱简述高光谱成像是一项重要的遥感技术,它采集了从…

SQL server 2008 安装教程

SQL server 2008 安装教程 1. 安装 SQL server 2008 的主要步骤如下 1.1 点击 setup.exe1.2 选中 “安装”&#xff0c;并点击右边的 “全新 SQL sever 独立或向现有安装添加功能1.3 重启电脑&#xff0c;再找到安装程序 “setup.exe” 重复上面的步骤1.4 输入产品秘钥 “JD8Y…

The Art of Prompting: Event Detection based on Type Specific Prompts

Motivation之前的研究表明prompt可以提高模型在事件检测方面的性能,包括使用特定structure 使用每种事件类型特定的query 原型 trigger这些尝试启发对不同prompt效果的探究Settings 作者在3种setting下做了实验:Supervised event detection Few-shot Event detection两个数据…