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基础语法相关推荐

  1. Flutter 核心编程二:Dart基础语法之基本数据类型,数组,方法,Runs,函数闭包,typedef,操作符

    Dart语法概要 // 定义个方法. printNumber(num aNumber) {print('The number is $aNumber.'); // 在控制台打印内容. }// 这是程序 ...

  2. Dart基础——Dart语法

    本文主要介绍Dart开发常用的一些语法 基础语法 Final,Const定义常量 Const 变量在编译时就已经固定. Final 变量或类变量在第一次使用时被初始化,懒加载. Const不能定义对象 ...

  3. Dart语法篇之基础语法(一)

    简述: 又是一段新的开始,Dart这门语言相信很多人都是通过Flutter这个框架才了解的,因为Flutter相比Dart更被我们所熟知.很多人迟迟不愿尝试Flutter原因大多数是因为学习成本高,显 ...

  4. Flutter从入门到精通之Dart基础篇(一)

    学Flutter必须先学会Dart 目录 什么是Dart? 环境搭建 入门HelloWorld 基础知识 1.  变量.常量.命名规则 2.  Dart的数据类型 3.  Dart的条件表达式 4.  ...

  5. Flutter入门:dart基础

    构造函数 在dart中构造函数的名字可以是 ClassName 或者 ClassName.identifier.如: class Point {num x, y;Point(this.x, this. ...

  6. Dart语言(一)--基础语法

    一.Dart基本特色概念 所有变量的值都是对象,也就是类的实例.数字.函数和null也都是对象,都继承自Object类. 虽然Dart是强类型语言,但Dart支持类型推断,显示变量类型声明是可选的.没 ...

  7. 浅谈跨平台框架 Flutter 的优势与结构

    作者:个推iOS工程师 伊泽瑞尔 一.背景 目前,移动开发技术主要分为原生开发和跨平台开发两种.其中,原生应用是指在某个特定的移动平台上,使用平台所支持的开发工具和语言,直接调用系统提供的API所开发 ...

  8. flutter可视化_Flutter 对Dart情有独钟的那些事儿

    早期Flutter 开发团队评估很了好多种语言,最后选择了Dart(小道消息:说Flutter部门和Dart部门挨着,说有问题可以直接沟通)有可能是一部分啊!但是大部分是因为Dart更符合他们构建用户 ...

  9. python基础语法 第0关print-温州文成高校邦数据科学通识课【Python基础语法】答案...

    温州文成高校邦数据科学通识课[Python基础语法]答案it8p 温州文成高校邦数据科学通识课[Python基础语法]答案 关注公众号{帅搜}即可查询答案 支持:网课,智慧树,知到,超星,尔雅,学习通 ...

最新文章

  1. Qt 连接达梦数据库
  2. k8s的yaml写法
  3. 032_jdbc-mysql批量操作
  4. python基础函数图_Python基础:函数
  5. 09_Fibonacci
  6. reactor和thread线程_Reactor模型详解:单Reactor多线程与主从Reactor多线程
  7. [Leedcode][JAVA][第139题][单词拆分][递归][记忆优化][动态规划]
  8. python如何调用阿里云接口_Python调用aliyun API设置阿里云负载均衡虚拟服务器组权重...
  9. gns3中两个路由器分别连接主机然后分析ip数据转发报文arp协议_ARP协议在同网段及跨网段下的工作原理...
  10. (软件工程复习核心重点)第六章实现和测试-第六节:白盒测试
  11. 腾讯砸1亿斗地主欢乐豆签约前《英雄联盟》电竞职业选手Uzi
  12. netty的使用部署
  13. 我什么时候应该使用懒惰 <T> ?
  14. U-boot下Nand Flash的相关命令
  15. cNode------路由设置以及项目基本框架搭建
  16. Linux的网络基础
  17. 内网渗透测试:隐藏通讯隧道技术
  18. 【GlobalMapper精品教程】010:EPSG简介、通过EPSG坐标转换应用实例
  19. 【2019.05.26】JS逆向——破解 企名片 参数(encrypt_data)爬虫 超级详细
  20. 【洛谷P2967】【USACO 2009 Dec】电子游戏 Video Game Troubles

热门文章

  1. 传阿里巴巴战略投资新浪微博
  2. 魔兽世界: 杀与不杀?WOW的精髓~竞技精神
  3. 如何运营TikTok
  4. 浏览器排行榜 哪个更好用!~
  5. 360居然扫描了我电脑上所有的隐私数据
  6. 把机械姬放在清宫,她能活到第几集?
  7. javaSE复习--数组
  8. 数据泵导出导入物化视图
  9. Ubuntu游戏大全
  10. 叮当网上书城项目简介