Flutter的优势以及Dart基础语法
1.为什么要学习Flutter?
对于移动端开发人员来说,跨平台技术一直是关注的重点,从H5,React Native到Flutter,我们似乎一直在寻找一种能“一套代码,多端运行”,同时还能有不俗的用户体验的技术。对于当前的大前端来说,React Native的综合成熟度和生态都要比Flutter好一些,对于中短期项目我们可能会选用前者,但是对于更长期的项目和发展来说,Flutter是一种更彻底的解决方案,渲染能力和平台一致性以及性能,它都具有更大的优势。
我们从Web容器时代,比如H5,Cordova,微信小程序,Ionic,这种基于web相关技术通过浏览器组件来实现界面及其功能,在android上是WebView,IOS上为UIWebView,这种采用原生内嵌的浏览器来进行渲染,虽然可以做到多端一致,对于用户体验很是有限,尤其是一些复杂的UI逻辑。
对于泛Web容器时代来说,代表的技术有React Native和Weex。基本上是完全放弃了浏览器控件的渲染,而是采用原生自带UI组件实现代替了核心的渲染引擎,仅仅保持必要的基本控件渲染能力,简化渲染,保证了良好的渲染性能。这个时代总体来说是做一个平衡,依然采用了前端友好的Js进行开发,原生来接管绘制,依托于Js虚拟机的Js代码提供所需的UI控件的实体。
但是对于这种映射来说,在维护各个平台的API升级方面往往需要巨大的成本,对于Android/Ios平台上使用React Navie,对开发人员的要求不仅仅是懂React那么简单,而是还需要懂两个平台的一些基础开发知识。
接下来是自绘引擎时代,即从头到尾写一套跨平台的UI框架,包括渲染逻辑甚至开发语言。所以对于移动端的开发人员来说,其实还是有一定的学习成本的(但对于已掌握一门编程语言的人几乎可以忽略不计),但从平台一致性,维护成本,性能以及开发效率上都是全方位碾压之前两个时代的技术。
1.Dart语言同时支持JIT和AOT。开发周期使用JIT,大大缩短开发周期,调式模式支持有状态的热重载;而发布期使用AOT,本地代码的执行更高效,代码性能和用户体验也更优秀。Dart避免了抢占式调度和共享内存,可以在没有锁的情况下进行对象分配和垃圾回收,在性能方面表现很是卓越。
2.渲染引擎依靠跨平台的Skia图像绘制引擎,Skia将使用Dart构建的抽象的视图结构结构数据加工成GPU数据,然后数据通过OpenGL最终提供给GPU渲染,因为安卓上已经有Skia引擎了,这也是Flutter Android SDK 要比 Flutter iOS SDK 小一些的原因,打包后的apk也会比ipa小。
明白了为什么要学习Flutter,我们就更能坚定我们的脚步,要学好Flutter,就要先学习它的开发语言Dart,下面我们来看看Dart基础语法:
2.Dart基础语法
数据类型及其相关
含义 | 使用 | |
---|---|---|
int
|
整数,范围为 -2^63 到 2^63 - 1. | int x = 1;//没有小数点就是int |
double
|
浮点数,64位(双精度)浮点数 | double y = 1.1;//有小数点就是浮点数 |
num
|
num 是数字类型,既可以表示整数,也可以表示浮点数,具体看赋的值 | num x = 1;//num x是整数 num y = 1.1;//num y是浮点数 |
String
|
字符串 Dart字符串采用UTF-16编码 可以使用单引号或双引号来创建字符串 | var s1 = ‘string’; var s2 = “string”;字符串拼接采用“+” |
bool
|
布尔值 | var isTrue = true; |
List
|
List E 表示 List 里的数据类型 用中括号来赋值 | List list = [1, 2, 3]; |
Set
|
Set E 表示 Set 里的数据类型 用大括号来赋值 | Set halogens = {‘fluorine’, ‘chlorine’, ‘bromine’, ‘iodine’, ‘astatine’}; |
Map
|
Map<K, V> K 是 Key 的数据类型,V是 Value 的数据类型 | Map<String,String> gifts = { // Key: Value 格式 ‘first’: ‘partridge’, ‘second’: ‘turtledoves’, ‘fifth’: ‘golden rings’}; |
Runes
|
表示采用 UTF-32 的字符串,用于显示 Unicode 因为Dart字符串是UTF-16,因此在Dart中表示32位的Unicode值需要Runes这个特殊语法。 |
Runes input = new Runes(’\u{1f600}’); print(new String.fromCharCodes(input)); 打印出来是笑脸emoji:
Flutter的优势以及Dart基础语法相关推荐
最新文章
热门文章 |