八月部门给分配的分享任务,由于项目太赶,推迟一个月。
选 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

最新文章

  1. DDD及相关概念
  2. bootstrap 时间控件带(时分秒)选择器
  3. Linux的.a、.so和.o文件
  4. 为大家分享一个 Ajax Loading —— spin.js
  5. Codeforces Round #216 (Div. 2) B. Valera and Contest
  6. iOS截图
  7. 查看oracle数据库中的保留字
  8. nyist 593 Take it easy
  9. MTK
  10. Java GetAndPost
  11. js操作数据库实现注册和登陆
  12. iOS GCD详解
  13. [C++参考]私有成员变量的理解
  14. 5. 跟踪标记 (Trace Flag) 834, 845 对内存页行为的影响
  15. Unity如何管理住Android 6.0 调皮的权限
  16. DB2常用命令小结
  17. c# MD5及盐值加密
  18. c++学习中的疑问
  19. bash内置命令mapfile:读取文件内容到数组
  20. gitblit 配置图文详解

热门文章

  1. map类型转为实体类
  2. 使用Theia——创建扩展包
  3. Head First设计模式——组合模式
  4. 1209. Construct the Rectangle
  5. 初始 Kafka Consumer 消费者
  6. 小程序中组件公用属性和data-的使用
  7. USACO简介导论
  8. kubernetes concepts -- Pod Lifecycle
  9. css 透明度
  10. 1.HelloWorld 仪式感