欢迎您光临深圳塔灯网络科技有限公司!
电话图标 余先生:13699882642

网站百科

为您解码网站建设的点点滴滴

Flutter初体验 - dart

发表日期:2018-11 文章编辑:小灯 浏览次数:1744

什么是 dart

刚开始接触我经常打成 drat或者datr,这玩意到底是什么?

这个是 Google 七年前(2011年)发布发布新网页编程语言Dart,是一种基于类编程语言(class-based programming language),在所有浏览器都能够有高性能的运行效率,2011年10月10日Google宣布推出Dart的预览版。其官网地址是:www.dartlang.org,目前已经是Dart2版本了

Google在dartlang.org公布Dart开发工具及源代码示例等内容,同时也提供相关虚拟机平台。
目前Dart有两种方式运行:一是在本地的虚拟机上,二是将Dart代码转成Javascript,直接在Javascript引擎上运行

ECMA已经成立技术委员会TC52展开标准化Dart的工作,同时由于Dart能够被编译成标准的JavaScript,它能够有效地在所有现代浏览器上运行。2014年7月,ECMA的第107次全体大会通过了第一版Dart语言规范。

总结下来就是 dart 是计算机编程语言,是由谷歌公司开发的网络编程语言。就类似常见的 Java、C、Swift一样。并且Dart是面向对象的、类定义的、单继承的语言。它的语法类似C语言,可以转译为JavaScript,支持接口(interfaces)、混入(mixins)、抽象类(abstract classes)、具体化泛型(reified generics)、可选类型(optional typing)和sound type system。

看到这个答案的时候我就是这个表情


本来你只想简单的做个 Android 开发者的,但是你不进步就被社会淘汰,比如现在 Kotlin,weex,react native 加上 Android 本身的生态混乱,各种适配已经让你在风中凌乱,现在又来一个 dart,能给调活路吗?

但是生活不还是得继续吗,学会了dart 到时候又可以拿出去跟小伙伴们吹牛逼了,所以继续学下去。

Dart语言的特性

Flutter 是 Google 推出的移动 UI 框架,野心路人皆知,但是为什么会选择 Dart 呢?
可以参考一下 这篇文章

Why Flutter Uses Dart ?
为什么 Flutter 会选择 Dart ?

里面也提到了一部分特性

  • Dart 是 AOT(Ahead Of Time)编译的,编译成快速、可预测的本地代码,使 Flutter 几乎都可以使用 Dart 编写。这不仅使 Flutter 变得更快,而且几乎所有的东西(包括所有的小部件)都可以定制。
  • Dart 也可以 JIT(Just In Time)编译,开发周期异常快,工作流颠覆常规(包括 Flutter 流行的亚秒级有状态热重载)。
  • Dart 可以更轻松地创建以 60fps 运行的流畅动画和转场。Dart 可以在没有锁的情况下进行对象分配和垃圾回收。就像 JavaScript 一样,Dart 避免了抢占式调度和共享内存(因而也不需要锁)。由于 Flutter 应用程序被编译为本地代码,因此它们不需要在领域之间建立缓慢的桥梁(例如,JavaScript 到本地代码)。它的启动速度也快得多。
  • Dart 使 Flutter 不需要单独的声明式布局语言,如 JSX 或 XML,或单独的可视化界面构建器,因为 Dart 的声明式编程布局易于阅读和可视化。所有的布局使用一种语言,聚集在一处,Flutter 很容易提供高级工具,使布局更简单。
  • 开发人员发现 Dart 特别容易学习,因为它具有静态和动态语言用户都熟悉的特性。

其实说白了就是,可以快速学习(但我不信)、有灵活的 UI、能达到原生的性能、还可以热重载。

听起来很厉害的样子,那不管怎么样还是要学一下的。毕竟Google 早就看 Java 不爽了,说不定 Android 15.0就不打算支持了咋整。虽然你可能不会做 Android 做到那个时候。

Dart 语法

由于你可能是做 Android 的所以应该是对 Java 比较熟悉(即使不是做 Android 的应该对 Java 也比较熟悉的我相信你),只需要注意下面强调的一些语法特性就行,其他的都比较类似,不需要全部都关注,到时候写的时候可以现学现用。

  • 方法
printHello({String name}) {print("hello, my name is $name"); } 

按着 Java 的这种调用方式会直接运行不起


改成这样就行。

 printHello(name:"简简单单敲代码"); printHello({String name}) {print("hello, my name is $name"); } 

当然还有不一样的地方,现在方法定义成两个参数,之前那样调用还是可以的。

 printHello({String name, String age}) {print("hello, my name is $name ,my age is $age"); }printHello(name:"简简单单敲代码"); 

最后再写个例子你就懂了

 printHello(name:"简简单单敲代码"); printHello(age:18); printHello(age:18,name:"简简单单敲代码");printHello({String name, String age}) { print("hello, my name is $name ,my age is $age");} 

看看输出很有意思,跟 Java区别还是挺大的。

  • 首先入参需要指定参数名
  • 传参可以少
  • 顺序可以不一致
  • 所有函数都返回一个值,如果没有指定返回值,则 默认把语句 return null; 作为函数的最后一个语句执行。
  • 可以把方法当做参数调用另一个方法(羡慕 swift 很久了,也被 iOS 同学鄙视很久了)。
  • 方法也可以赋值给一个变量
  • 比Java爽

是不是就可以不需要方法重载了?

  • 在Dart的构造中可以没有方法体
  • 关键字
  • public、private、protected 没有了
  • 如果一个标识符以 (_) 开头,则该标识符 在库内是私有的,
  • 可以不使用new关键字创建对象
  • Dart中变量初始值为null,即使是int类型也是null。
  • 基本类型
  • 没有float
  • int和double是num的子类
  • String也可以使用单引号
  • Dart需要一个布尔值的时候,只有true对象才被认为true,其他都是false。
  • 操作符
    这个比较多随便举几个例子
  • isis!当对象是相应类型时返回 true/false
  • ??=操作符,如果前操作数是null类型,则将后操作数赋值给前操作数;如果前操作数不等于```null``,则保持前操作数的值发生变化。
  • 使用?? 表达式。
    expr1 ?? expr2
    如果expr1的值为non-null,则返回结果为expr1;反之则返回expr2。
  • ..级联操作符(额。。。)可以连续的操作同一对象,达到减少中间变量,减少代码的目的。
    好像很厉害的样子。

当然还有很多自己看文档吧。


本页内容由塔灯网络科技有限公司通过网络收集编辑所得,所有资料仅供用户学习参考,本站不拥有所有权,如您认为本网页中由涉嫌抄袭的内容,请及时与我们联系,并提供相关证据,工作人员会在5工作日内联系您,一经查实,本站立刻删除侵权内容。本文链接:http://dengtar.com/17698.html
相关APP开发
 八年  行业经验

多一份参考,总有益处

联系深圳网站公司塔灯网络,免费获得网站建设方案及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

业务热线:余经理:13699882642

Copyright ? 2013-2018 Tadeng NetWork Technology Co., LTD. All Rights Reserved.