前言

使用过Flutter的同学,应该都听过一句话“everything is a widget——在Flutter中万物皆是Widget”。

这句话虽然不能说,Flutter开发所有代码模块都是一个Widget,但足以说明Widget在Flutter中的重要性,本篇文章就重点关于Flutter Widget的原理进行解读。

Widget简介

什么是Widget?我们先看一下官方的描述

“Describes the configuration for an [Element]”

在Flutter中,Widget的功能是“描述一个UI元素的配置数据”。

这句话很简单,如何理解呢?暂时可以简单的理解,FLutter最终绘制在设备上的显示元素,都是通过Widget配置出来的。

在web前端开发中,我们知道浏览器页面由HTML+CSS+JS配置而成,其中HTML负责配置UI结构,CSS负责配置UI样式,JS负责UI的交互。

而在Flutter中,无论是UI结构,还是UI样式,再到UI交互都是通过Widget完成。例如:

  1. Widget树结构配置UI结构
  2. 样式Widget,Padding、Color等
  3. 交互Widget,GestureDetector等

Widget分类

在Flutter中,官方提供的原生Widget多达300+,这么多Widget,在基础原理层面是如何分类的呢?

使用过Flutter的同学&#

Flutter Widget原理(一)相关推荐

  1. 拆!对比详解 Flutter Widget 和 CSS,你关心的布局原理都在这儿了

    简介: 这篇文章专门对比 Flutter Widget 的布局原理和 CSS 布局原理的差异,分享在对接过程中会遇到的问题和解决方案,帮大家理一理思路,内容可以分为这几部分:1.CSS 和 Widge ...

  2. Flutter 核心原理与混合开发模式

    作者:airingdeng,腾讯QQ前端开发工程师 本文将从 Flutter 原理出发,详细介绍 Flutter 的绘制原理,借由此来对比三种跨端方案:之后再进入第三篇章 Flutter 混合开发模式 ...

  3. Flutter Widget嵌套深,修改代码麻烦?

    Flutter Widget嵌套深,修改代码麻烦? 背景 解决方法 代码 修改 pubspec.yaml 以支持 Extension: Widget扩展代码: 实际使用: 背景 许多人初次接触Flut ...

  4. Flutter Widget详解

    Flutter Widget详解 Widget是Flutter应用程序用户界面的基本构建块.每个Widget都是用户界面一部分的不可变声明. 与其他将视图.控制器.布局和其他属性分离的框架不同,Flu ...

  5. 国内少有的Flutter干货分享:Flutter的原理及美团的实践!

    关注公众号"风色年代"订阅更多精彩文章,本博大部分文章为转载并已标明原文出处,如有再转敬请保留,请自觉尊重原创作者的劳动成果! 原文:http://blog.itpub.net/3 ...

  6. Flutter 路由原理解析

    前言 这一次,我尝试以不贴一行源代码的方式向你介绍 Flutter 路由的实现原理,同时为了提高你阅读源码的积极性,除了原理介绍以外,又补充了两个新的模块:从源码中学习到的编程技巧,以及 阅读源码之后 ...

  7. Flutter 实现原理及跨平台实践

    一直以来,跨平台开发都是困扰移动客户端开发的难题. 在马蜂窝旅游 App 很多业务场景里,我们尝试过一些主流的跨平台开发解决方案, 比如WebView 和 React Native,来提升开发效率和用 ...

  8. Flutter 笔记 | Flutter 核心原理(一)架构和生命周期

    Flutter 架构 简单来讲,Flutter 从上到下可以分为三层:框架层.引擎层和嵌入层,下面我们分别介绍: 1. 框架层 Flutter Framework,即框架层.这是一个纯 Dart实现的 ...

  9. Flutter 实现原理及在马蜂窝的跨平台开发实践

    一直以来,跨平台开发都是困扰移动客户端开发的难题. 在马蜂窝旅游 App 很多业务场景里,我们尝试过一些主流的跨平台开发解决方案, 比如WebView 和 React Native,来提升开发效率和用 ...

最新文章

  1. linux 终端 渐变色,iOS开发——UI篇文字渐变效果:图层中的mask属性
  2. 软件工程--软件计划
  3. java笔试题_一个Java程序员在百度的笔试题整理
  4. VTK:Math之EigenSymmetric
  5. 微信开发之获取OAuth2.0网页授权认证和获取用户信息进行关联(转:http://playxinz.iteye.com/blog/2249634)
  6. golang CI: Use result of type assertion to simplify cases SCC-S1034
  7. 你可能不知道的关于 Git stash 的技巧
  8. Chapter eight Data Structure(数据结构)
  9. Java 迭代实现归并排序
  10. github安装及使用图文详解
  11. Scratch(四十六):万圣节来喽
  12. 免杀技术有一套(免杀方法大集结)
  13. CSDN-markdown编辑器使用教程存档
  14. 创建wincc项目提示无法连接到服务器,wincc 项目管理器 服务器不可用 无法连接到服务器...
  15. mian()方法详细分析(面向对象的体现)
  16. 万字综述:如何打造自动驾驶的数据闭环?
  17. 普通链接与迅雷、旋风、快车链接相互转化的步骤
  18. 好嗨哟!OneOS 图形组件显示自己喜欢的图片
  19. 利用Python去除图片水印,太神奇了!
  20. 地图无限放大服务器软件,BIGEMAP离线地图服务器

热门文章

  1. java 文件上传怎么知道是否成功_java ,上传成功怎么接收回执信息判断是否上传成功?...
  2. 爬取建标库规范全文到本地word(selenium+python-docx+tesseract实现)
  3. PHP-----PHP程序设计基础教程----第二章PHP基本语法
  4. 《设计模式:可复用面向对象软件的基础》——行为模式(2)(笔记)
  5. 网站建设的基本流程是什么
  6. 怎么画单极交流放大电路波形图_全差分放大器(1)——共模的意义
  7. 计算机应用应该学什么样的数学,数学与应用数学学些什么?适合什么样的人学?...
  8. 今天分享几个牛逼的网站,不知道你用过没?
  9. macbook 外接显示器 模糊问题解决
  10. 马云十年前说的新商业文明是不是在吹牛?