八月部门给分配的分享任务,由于项目太赶,推迟一个月。
选 Flutter 这个主题,是因为现在它慢慢流行起来了,而我却不了解,故而借此契机,上手试试。

简介

Flutter 是 Google 推出的跨平台开发框 架。⽬目前⽀支持 iOS, Android 开发,对web 端桌面端⽀支持还在开发中。
2017 年年 5 ⽉月,Flutter 发布第⼀一个版本。 2018 年年 12 ⽉月,第⼀一个稳定版本, 1.0 发 布。

Flutter 的开发语⾔言是 Dart 。

Flutter 实现了了⼀一整套的跨平台 UI 框架,包括控件,布局,渲染和开发语言。
Flutter Engine 依靠 跨平台的 Skia 进⾏行行渲染,只依赖系统的图形绘制 接口,因此能够很⼤大程度地抹除不不同平台的体验差 异。
采⽤的 Dart 语言,性能优于其他跨平 台框架所使⽤用的 JavaScript 。
再加上 Google 的⽀支 持,Flutter 最近⼀年多发展迅速。

Flutter ⽀支持 macOS, Windows 和 Linux 作为开发环境IDE 有 Android Studio, IntelliJ 和 Visual Studio Code。

Stack Overflow Trends 对比

图表链接 https://insights.stackoverflow.com/trends?tags=react-native,flutter,ionic,cordova,xamarin

Dart 简介

☸ OOP
☸ 强类型
☸ 专⻔门为客户端优化
☸ 跨平台 (iOS, Android)
☸ 可移植 (ARM/x86)
☸ JIT 和 AOT 运⾏行行模式

Language Tour:https://dart.dev/guides/language/language-tour
Dart 第三⽅方库: https://pub.dev/packages

Flutter 分层架构

有底至上,Framework 层组成部分为:

☆ Foundation: 封装的⼯工具类和⽅方法;
☆ Animation: 动画相关;
☆ Painting: 封装了了 Engine 提供的绘制接⼝口;
☆ Gestures: 触摸事件处理理,⼿手势识别器器;
☆ Rendering: 渲染库;
☆ Widgets: 组件库;
☆ Material: Material Design ⻛风格组件库;
☆ Cupertino: iOS ⻛风格的组件库;

Flutter 项目结构

☸ lib: 写 Dart 代码的地⽅方
☸ ios, android: 原⽣生的宿主项⽬目
☸ build: 运⾏行行的中间产物
☸ test: 单元测试
☸ pubspec.yaml: 第三⽅方库以及资源管 理理⽂文件
☸ External Libraries: 库⽂文件
(images 是⼿手动创建的⽬目录)

用 widgets 构建界⾯面

Everything is a widget.

Widget 是什么

它们的作用分别为:

  • Widget: 存放渲染内容和布局信息

  • RenderObjectElement: 存放上下⽂文,持有 Widget 和 RenderObject

  • RenderObject: 布局和绘制

StatelessWidget 和 StatefulWidget

  • StatelessWidget: 静态展示

  • StatefulWidget: 动态展示(随外部事件改变)

与原⽣生交互

Flutter 提供了 Platform Channels 机制来实现与原生的交互。

详细可参考 https://flutter.dev/docs/development/platform-integration/platform-channels

PDF 讲稿和 demo 可访问 Github

Flutter 入门 --- 内部分享的更多相关文章

  1. Spark入门PPT分享

    本篇PPT是我在公司内部进行Spark入门的分享,内容包含了Spark基本概念.原理.Streaming.SparkSQL等内容,现在分享出来. 下载请点击这里

  2. Flutter入门之有状态组件

    StatefulComponent使用方法入门 在上一篇Flutter入门之无状态组件中我们讲到了无状态组件,所谓的无状态组件指的就是其内部的状态是来自其父组件并使用final类型的变量来存储,当组件 ...

  3. Facebook内部分享:25个高效工作的小技巧

    Facebook内部分享:25个高效工作的小技巧 Facebook 内部分享:不论你如何富有,你都赚不到更多的时间,你也回不到过去.没有那么多的假如,只有指针滴答的时光飞逝和你应该好好把握的现在,以下 ...

  4. Java 并发编程内部分享PPT分享

    .NET程序员转向JAVA领域,必备技术首当其冲就是JAVA Concurrency 并发编程. 最近系统性的学习了 Doug Lea <JAVA并发编程实战>一书.这书很有嚼劲,进入JA ...

  5. 青客宝团队Consul内部分享ppt

    青客宝团队Consul内部分享ppt   https://mp.weixin.qq.com/s?src=3&timestamp=1503647705&ver=1&signatu ...

  6. 淘宝内部分享:MySQL & MariaDB性能优化

    发表于2015-01-20 16:26| 28875次阅读| 来源mysql.taobao.org| 22 条评论| 作者淘宝数据库团队 MySQL性能优化淘宝数据库 摘要:MySQL是目前使用最多的 ...

  7. flutter入门开发的一些坑

    flutter入门开发的一些坑 很久没写博客了,最近在准备物联网比赛,顺便抽出时间学习了一下flutter,花了近2周完成了一个查看博客博文的一个小的APPdemo,随便截了两张图,如下: 首页 博客 ...

  8. flutter 入门(Mac)

    背景 近一年时间都在用 React Native 开发公司的 APP,水平基本上可以说是登堂入室了.前一段时间兴起一阵 Flutter 热,后端的同事都有推荐,今年 Google 大会又推出 flut ...

  9. jmeter 性能测试入门手册分享

    深思熟虑之下,决定把这份性能测试入门手册分享给大家 最初整理这份教程的是因为自己在学习性能测试的过程中踩过了很多的坑,遇到了 数不清的问题,于是就想着将这些解决的问题全都归拢在一个文档里,方便自己查阅 ...

随机推荐

  1. 闯荡Linux帝国:nginx的创业故事

    前情回顾: NextStep帝国推出的web服务,迅速风靡比特宇宙,各星系帝国均蠢蠢欲动,想在这一波浪潮中掘一桶金. 详情参见:万维网的诞生 初出茅庐 小马哥和他的小伙伴小黑.大黄来到陌生的Linux ...

  2. Python简介及学习

    Python简介 Python是著名的“龟叔”Guido van Rossum在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言. 现在,全世界差不多有600多种编程语言,但流行的编程语 ...

  3. 【题解】GREWords(AC自动机)

    [题解]GREWords(AC自动机) SP9941 GRE - GRE Words 题目大意: 给定一个由字符串构成的序列,不同位置的字符串有自己权值.现在让你选出一个子序列,使得在这个子序列中,前 ...

  4. 洛谷$P4768\ [NOI2018]$归程 $kruscal$重构树

    正解:$kruscal$重构树 解题报告: 传送门$QwQ$ 语文不好选手没有人权$TT$连题目都看不懂真的要哭了$kk$ 所以先放个题目大意?就说给定一个$n$个点,$m$条边的图,每条边有长度和海 ...

  5. 星星泡饭-R1SE

    作词 : 吴孤儿 时光不用斟酌 再流淌 摩天轮慢慢地旋转 约定 留下搅拌的星光 赵磊: 媲美哪颗星星的孤寂 是我们 脏不了的心 勇敢 游戏 品尝着很饿的梦境 我的梦想只是梦想 哪怕回音只是气球碰撞 会 ...

  6. React Hooks 完全指南,读React作者博文感悟(2W字精华)

    阅读 facebook大佬:Dan Abramov 的文章颇有感悟 大佬 github地址 https://github.com/gaearon 重点总结 useEffect 是同步的 状态是捕获的当 ...

  7. docker概述和基本命令

    命名空间 Docker使用一种称为namespaces提供隔离工作空间的技术来称为容器.当您运行容器时,Docker会为该容器创建一组 名称空间. 这些命名空间提供了一层隔离.容器的每个方面都在一个单 ...

  8. 手把手带你了解消息中间件(2)——RabbitMQ

    RabbitMQ官网: http://www.rabbitmq.com/ Erlang官网:https://www.erlang.org 友情提示:RabbitMQ基于Erlang语言开发的,要想使用 ...

  9. MySQL 持久化保障机制-redo 日志

    我们在 聊一聊 MySQL 中的事务及其实现原理 中提到了 redo 日志,redo 日志是用来保证 MySQL 持久化功能的,需要注意的是 redo 日志是 InnoDB 引擎特有的功能. 为什么 ...

  10. webpack 三

    之前06年写了两篇自己研究webpack的文章,由于webpack已经升到了4.x,今天用起来发现有点小变化,重新自己建一个简单的项目,这里记录一下过程 1.安装webpack和webpack-cli ...