Flutter
Flutter是谷歌2018年在世界移动大会上发布的移动跨平台框架,Flutter能够同一份代码开发IOS和Android、提高开发效率。在应用程序运行时更改代码支持热重载、修复崩溃并继续从应用程序停止的地方进行调试。支持Material Design和Cupertino的设计风格。缺点就是目前刚刚推出,只有beta版本,UI控件不是特别丰富。
Flutter是基于Dart语言开发的,Google的亲儿子。Dart中文社区是一个不错学习Dart语言的网站,如果熟悉Java、JavaScript,那么学习Dart也会更加轻松。
环境搭建
- 下载Flutter SDK
可以去Flutter官网下载最新版本的SDK
- 安装Android Studio插件支持
Android Studio环境搭建好的前提之下只需要在Android Studio中安装Flutter、Dart两个
插件即可。然后就能通过File——>New——>New Flutter Project。然后选择Flutter的SDK目录,填写项目名称,包名等信息就可以finish了。
经过上面两个简单的步骤基本可以开启Flutter的Hello World之路了。
为什么要学习Flutter
从兼容性、开发成本、学习成本、性能、未来应用前途等方面考虑
-
Native
Native的App性能最有无可否认,毕竟是直接和内核交互。因为Android、IOS是两个不同的平台开发成本较高。版本发布、迭代的时候遇到Bug需要继续发包,这是十分令人头疼的。一般大厂都是主要基本框架使用Native方案,例如商品活动等页面,频繁刷新用户视觉的页面采用其他方案。
-
WebView
WebView方案就是加载Html页面,方便简洁,能解决一些简单的功能,但是bug也挺多的,局限性较大,性能方面会比较卡,网页加载缓慢,不同系统的不同版本兼容性极差。所以这种方案只适合开发一些简单的需求。
-
React Native
React Native是Face Book 2015年推出得一种快速开发移动App的解决方案,React Native可以完全和Native交互,这样React解决不了的问题可以使用Native方案解决。虽然需要为Android、IOS开发独立的版本,但是80%的代码的相同的,丰富的UI框架使得他比同类型的Weex优势很大,React Native可以更加方便地热更新。性能方便比WebView要高。React Native 没有热重载等类似功能开发效率不高。开发的应用体积较大,因为原始系统版本太多,兼容性也还是有问题的。最近传言React Native Bug频出,不知道后续版本会如何。
-
Flutter
Flutter在性能上和原生没有什么差距,因为他不采用浏览器技术,他是使用自己的渲染引擎来渲染Widget,Flutter支持热重载,提高了开发效率,可以使用一套代码开发IOS和Android,Flutter的UI支持Material Design和Cupertino的设计风格,能够满足移动端开发的需求。Flutter是Google官方推出,前途不错,并且可以开发Google Fuchsia。
一切皆Widget
根据下面的Flutter的架构图可以看出Flutter中一切皆Widget,Widget根据是否存在可变状态分为两类。StatelessWidget(无可变状态Widget)和StatefulWidget(存在可变状态Widget)。
基础Widget
- Text:该Widget可创建一个带格式的文本。
- Row、Column:这些具有弹性空间的布局类Widget可让您在水平(Row)和垂直(Column)方向上创建灵活的布局。
- Stack:取代LinearLayout,Stack允许子Widget堆叠。你可以使用 Positioned 来定位他们相对于Stack的上下左右四条边的位置。Stacks是基于Web开发中的绝度定位(absolute positioning )布局模型设计的。
-
Container:Container可让您创建矩形视觉元素。Container可以装饰为一个BoxDecoration,如background、一个边框、或者一个阴影。Container也可以具有margin,padding和
应用于其大小的约束。另外,Container可以使用矩阵在三维空间中对其进行交换。