前言
作为2018世界移动大会的内容之一,Google发布了Flutter的第一个 beta 版本。Flutter 是 Google 用以帮助开发者在 iOS 和 Android 两个平台开发高质量的原生应用的全新移动 UI 框架。现在就可以去 flutter.io快速上手开发精美的原生应用。
二、首先我们要理解什么是跨平台。
什么是跨平台?如果你是移动开发者的话,应该知道 Android 是使用 Java\Kotlin 语言来开发而 iOS 则是 OC\Swift来开发。各大科技圈大佬们都在绞尽脑汁的想统一这两个平台,无论 Android 还是 iOS 都是移动端,若能统一用一套语言开发应用那最好不过的。这也正是跨平台的意思,简单的说就是你写的同一套代码可以运行在不同的平台。不仅能够大大加快开发的进度,同时也能减少人力成本的投入。
Flutter就是在这种理念中诞生出的跨平台框架。
Flutter 的目标是解决移动开发中的两个重要问题:
- 实现原生应用的性能和与平台的集成
- 提供一个多平台,可移植的 UI 工具包来支持高效的应用开发。
Flutter与ReactNative的区别?
一个是 Facebook 推出两年多的 ReactNative ,另一个则是 Google 这种顶级科技公司的产品Flutter。那么它们有什么区别呢?
看过ReactNative源码的朋友都应该知道,RN中的组件都继承自Native View组件。例如:ReactNative 中的 ListView 在 Android 中就是继承自 ListView ,还有 RecycleView。
而Flutter则不同,它的所有 UI 组件都是一帧一帧画出来的。这样能够很准确并且很灵活的做出你想要的 UI 。
Flutter 使用 Dart语言开发而 ReactNative 则使用 JS 结合 XML 来开发的。
估计说道Dart语言,很多朋友都不知道。其实,我也是刚刚知道。。。
下面就说道说道Dart语言。
基于Dart语言开发的Flutter框架
dart语言是由谷歌公司开发的网络编程语言,于2011年10月10日发布。谷歌2010年内部备忘录显示,Dart的目标就是要代替JavaScript网络开发通用语言的地位。
然而,那么多年过去了。。。今天却以这种方式出现
先来看段代码
class _MyHomePageState extends State<MyHomePage> {
int _counter = 0;
void _incrementCounter() {
setState(() {
_counter++;
});
}
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(
title: new Text(widget.title),
),
body: new Center(
child: new Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
new Text(
'You have pushed the button this many times:',
),
new Text(
'$_counter',
style: Theme.of(context).textTheme.display1,
),
new Image.network(
'https://raw.githubusercontent.com/flutter/website/master/_includes/code/layout/lakes/images/lake.jpg',
)
],
),
),
persistentFooterButtons: <Widget>[new FloatingActionButton(
onPressed: _incrementCounter,
tooltip: 'Increment',
child: new Icon(Icons.add),
) ]
,
floatingActionButton: new FloatingActionButton(
onPressed: _incrementCounter,
tooltip: 'Increment',
child: new Icon(Icons.add),
), // This trailing comma makes auto-formatting nicer for build methods.
);
}
}
是不是还在各种括号和嵌套中魂牵梦绕呢?
直观感受就是没有RN写起来那么简洁明了。
在知乎上看到的一个真实的段子
为什么Flutter 用 Dart 开发在会后,我也主动的去找 Flutter 的开发专家 Divod 聊了会。我问到他一个问题,我说为什么你们会选择用 Dart 语言来开发而不选择用XML 和 JS ,从刚才您的代码示例上我的第一感觉就是没有 ReactNative 的可读性高。大家也许觉得我太大胆,在 Google 的场子提 Facebook 的东西。但技术毕竟是技术,程序员何苦为难程序员,这是一场技术的交流。最后,他也给了我一个满意和无力反驳的答案,“因为 Dart 的开发团队就在他们旁边,他们能给到我们很快的支持。我们能很快沟通到”。所以我也就默认了 Flutter 注定会一直使用 Dart 这门语言。
三、 Flutter的优点
- 跨平台的优点不必多说
- Flutter默认Meteria UI,开发起来贼溜
- hot reload的开发模式非常方便,基本上做到实时查看改变的UI
- 将来发布的 Fuchsia OS 就钦定了 Flutter 作为 UI Toolkit
- 从性能上来讲,Flutter是加分的。
四、 Flutter的缺点
- 使用Dart开发容易造火箭🚀
- 目前处于beta版本,商业化的话还需要再等等。。。鬼知道什么时候
- 对于IOS UIKit来说,Flutter Meterial Design还不能取代之,只能作为一种补充。
- 在Android 平台上,一个架构的SO居然要7M左右,简直不能忍。
对于Flutter我还是持乐观态度的,但是就看Google努力否了。如果能像Tensorflow或者Golang那样流行就好了。想玩的童鞋可以持续关注Flutter的动向,如果想要运用到商业项目上还是等等吧。
本文转自 https://www.jianshu.com/p/1f05b604f43e,如有侵权,请联系删除。
有需要更多完整学习资料的,可以扫描下方二维码领取资料!
Flutter技术解析与实战,全家桶学习资料(含Flutter进阶学习笔记、入门与实战和完整开发实战详解)
Flutter是谷歌的移动UI框架,可以快速在iOS和Android上构建高质量的原生用户界面。 Flutter可以与现有的代码一起工作。在全世界,Flutter正在被越来越多的开发者和组织使用,并且Flutter是完全免费、开源的。
在这里为了方便大家系统的学习Flutter,这里特意联合了阿里P7架构师和谷歌技术团队共同整理了一份Flutter全家桶学习资料。
内容概要:Flutter技术解析与实战、Flutter进阶学习笔记、Flutter入门与实战和Flutter完整开发实战详解。
内容特点:条理清晰,含图像化表示更加易懂。
由于文章内容比较多,篇幅有限,资料已经被整理成了PDF文档,有需要 Flutter技术解析与实战 完整文档的可扫描下方卡片免费获取!
《Flutter技术解析与实战》
目录
第一章 混合工程
● Flutter工程体系
● 混合工程改造实战
● 混合工程与持续集成
● 快速完成混合工程搭建
● 使用混合栈框架开发
第二章 能力增强
● 基于原生能力的插件扩展
● 基于外接纹理的同层渲染
● 多媒体能力扩展实践
● 富文本能力应用实践
第三章 业务架构设计
● 应用框架设计实践
● 轻量级动态化渲染引擎的设计
● 面向切面编程的设计实践
● 高性能的动态模板渲染实践
第四章 数据统计与性能
● 数据统计框架的设计
● 性能稳定性监控方案的设计
● 高可用框架的设计与实践
● 跨端方案性能对比实践
第五章 企业级应用实战
● 基于Flutter的端结构演进与创新
● Flutter与FaaS云端一体化架构
由于文章内容比较多,篇幅有限,资料已经被整理成了PDF文档,有需要 Flutter技术解析与实战 完整文档的可扫描下方卡片免费获取!
《Flutter进阶学习笔记》
目录
第一章 为什么 Flutter 是跨平台开发的终极之选
● 这是为什么?
● 跨平台开发
● 什么是Flutter
● Flutter特性
● Flutter 构建应用的工具
● 使用 Flutter 构建的热门应用
● 构建 Flutter 应用的成本
第二章 在Windows上搭建Flutter开发环境
● 使用镜像
● 系统要求
● 获取Flutter SDK
● 编辑器设置
● Android设置
● 起步: 配置编辑器
● 起步: 体验
● 体验热重载
第三章 编写您的第一个 Flutter App
● 创建 Flutter app
● 使用外部包(package)
● 添加一个 有状态的部件(Stateful widget)
● 创建一个无限滚动ListView
● 添加交互
● 导航到新页面
● 使用主题更改UI
第四章 Flutter开发环境搭建和调试
● 开发环境的搭建
● 模拟器的安装与调试
● 开发环境的搭建
● 模拟器的安装与调试
第五章 Dart语法篇之基础语法(一)
● 简述
● Hello Dart
● 数据类型
● 变量和常量
● 集合(List、Set、Map)
● 流程控制
● 运算符
● 异常
● 函数
● 总结
第六章 Dart语法篇之集合的使用与源码解析(二)
● List
● Set
● Map
● Queue
● LinkedList
● HashMap
● Map、HashMap、LinkedHashMap、SplayTreeMap区别
● 命名构造函数from和of的区别以及使用建议
第七章 Dart语法篇之集合操作符函数与源码分析(三)
● 简述
● Iterable
● forEach
● map
● any
● every
● where
● firstWhere和singleWhere和lastWhere
● join
● take
● takeWhile
● skip
● skipWhile
● follwedBy
● expand
● reduce
● elementAt
第八章 Dart语法篇之函数的使用(四)
● 简述
● 函数参数
● 匿名函数(闭包,lambda)
● 箭头函数
● 局部函数
● 顶层函数和静态函数
● main函数
● Function函数对象
第九章 Dart语法篇之面向对象基础(五)
● 简述
● 属性访问器(accessor)函数setter和getter
● 面向对象中的变量
● 构造函数
● 抽象方法、抽象类和接口
● 类函数
● 总结
第十章 Dart语法篇之面向对象继承和Mixins(六**)**
● 简述
● 类的单继承
● 基于Mixins的多继承
● 总结
第十一章 Dart语法篇之类型系统与泛型(七)
● 简述
● 可选类型
● 接口类型
● 泛型
● 类型具体化
● 总结
第十二章 Flutter中的widget
● Flutter页面-基础Widget
● Widget
● StatelessWidget
● State生命周期
● 基础widget
● DefaultTextStyle
● FlutterLogo
● Icon
● Iamge.asset
● CircleAvatar
● FadeInImage
● 按钮
● FlatButton
● OutlineButton
● TextFormField
由于文章内容比较多,篇幅有限,资料已经被整理成了PDF文档,有需要 Flutter技术解析与实战 完整文档的可扫描下方卡片免费获取!
《Flutter入门与实战》
目录
第一章、Flutter基本功能
● 我的第一个 Flutter 应用之旅
● 容器的盒子模型
● 构建一个常用的页面框架
● 设置 App 的主色调与字体
● 来一个图文并茂的列表
● 给列表增加下拉刷新和上滑加载更多功能
● 使用cached_network_image 优化图片加载体验
● 仿一个微信价值几个亿的页面
● 开发一个常用的登录页面
● 封装一个通用的文本输入框
● 底部弹窗ModelBottomSheet详解
● 利用CustomScrollView实现更有趣的滑动效果
● 底部弹窗如何实现多项选择?
第二章、Flutter路由管理
● App页面路由及路由拦截实现
● 路由参数处理
● 初识 fluro 路由管理
● 使用 fluro 的转场动画提高页面切换体验
● 使用自定义转场动画实现个性化页面切换
● 此路是我开,此树是我栽。若是没权限,403到来
● Flutter 2.0的路由把我搞蒙了
● 山路十八弯的2.0路由
第三章、Flutter网络请求插件Dio
● 初次见面,网络请求王者之dio
● 利用 Dio请求删除数据
● 使用 Dio的 Patch请求完成详情编辑
● 使用 Post 请求增加动态
● 一文搞定图片选择及图片上传
● 使用 GetIt 同步不同页面间数据
● Dio 封装之金屋藏娇
● Dio 之拦截器
● Dio之戛然而止
● 从源码深入了解Dio 的
● 小伙子,你买票了吗?
● 手写一个持久化的
● Dio之文件下载
● Dio 篇章总结
第四章、Flutter状态管理
● 基础原理篇
● Provider篇
● Redux篇
● Mobx篇
● Getx篇
● BLOC篇
● 状态管理系列大汇总
第五章、Flutter 动画
● 使用 Animation 构建爱心三连动画
● 让你的组件拥有三维动效
● 小姐姐渐现效果 ——AnimatedOpacity 使用
● 使用 AnimatedBuilder分离组件和动画,实现动效复用
● 看这一颗跳动的热心—— AnimatedPadding 应用
● 使用AnimatedSwitcher 做场景切换
● 给小姐姐的照片调个颜色滤镜
由于文章内容比较多,篇幅有限,资料已经被整理成了PDF文档,有需要 Flutter技术解析与实战 完整文档的可扫描下方卡片免费获取!
# 《Flutter完整开发实战详解》目录
第一章 Dart语言和Flutter基础
第二章 快速开发实战篇
第三章 打包与填坑篇
第四章 Redux、主题、国际化
第五章 深入探索
第六章 深入Widget原理
第七章 深入布局原理
第八章 实用技巧与填坑
第九章 深入绘制原理
第十章 深入图片加载流程
第十一章 全面深入理解Stream
第十二章 全面深入理解状态管理设计
第十三章 全面深入触摸和滑动原理
第十四章 混合开发打包 Android 篇
l Flutter 面试知识点集锦
l Flutter 开发实战与前景展望 - RTC Dev Meetup
由于文章内容比较多,篇幅有限,资料已经被整理成了PDF文档,有需要 Flutter技术解析与实战 完整文档的可扫描下方卡片免费获取!
**更有更多资料,加微信免费领取**