离不开DART的Flutter(dart篇)
前言:Dart是谷歌开发的计算机编程语言,后来被Ecma (ECMA-408)认定为标准。它被用于web、服务器、移动应用 [2] 和物联网等领域的开发。它是宽松开源许可证(修改的BSD证书)下的开源软件。 Dart是面向对象的、类定义的、单继承的语言。它的语法类似C语言,可以转译为JavaScript,支持接口(interfaces)、混入(mixins)、抽象类(abstract classes)、具体化泛型(reified generics)、可选类型(optional typing)和sound type system 定义:Dart 是由谷歌开发的通用的编程语言,它常用于构建web、服务器、桌面和移动应用程序。 Dart是一种简洁、清晰、基于类的面向对象的语言,它是基于JavaScript的大三女生结构要比JavaScript要多。 Dart是一种面向对象的、类定义的、垃圾回收语言。它支持接口、mixin、类对象,具有化泛型、静态类型等。 用法例子:
hello world例子
在终端打印字符串‘Hello World!’ main() { ``print(``"Hello World!"``); }
计算斐波那契数列 int` `fib(``int` `n) => (n > ``2``) ``? (fib(n - ``1``) + fib(n - ``2``)) ``: ``1``; void` `main() { ``print(``"fib(20) = ${fib(20)}"``); }
一个简单的类
计算两点距离 // 引入math库以访问sqrt函数 import` `"dart:math"` `as math; // 创建类Point. class` `Point { ``// Final变量一经定义不可改变 ``// 创建分别代表x、y轴的距离变量 ``final` `num x, y; ``// 在构造方法中以语法糖快捷地设置实例变量 ``Point(``this``.x, ``this``.y); ``// 一个带有初始化列表的命名构造方法 ``Point.origin() ``: x = ``0``, ``y = ``0``; ``// 计算两点距离的方法 ``num distanceTo(Point other) { ``var dx = x - other.x; ``var dy = y - other.y; ``return` `math.sqrt(dx * dx + dy * dy); ``} ``// 重载运算符 ``Point operator +(Point other) => ``new` `Point(x + other.x, y + other.y); }
// 所有的Dart程序都以main()函数作为入口 void` `main() { ``// 实例化两个点 ``var p1 = ``new` `Point(``10``, ``10``); ``var p2 = ``new` `Point.origin(); ``// 计算两点距离 ``var distance = p1.distanceTo(p2); ``print(distance); }
异步并发示例
使用了Isolate import` `"dart:async"``; import` `"dart:isolate"``;
main() async { ``var receivePort = ``new` `ReceivePort(); ``await Isolate.spawn(echo, receivePort.sendPort); ``// "echo"发送的第一个message,是它的SendPort ``var sendPort = await receivePort.first; ``var msg = await sendReceive(sendPort, ``"foo"``); ``print(``"received $msg"``); ``msg = await sendReceive(sendPort, ``"bar"``); ``print(``"received $msg"``); } /// 新isolate的入口函数 echo(SendPort sendPort) async { ``// 实例化一个ReceivePort 以接收消息 ``var port = ``new` `ReceivePort(); ``// 把它的sendPort发送给宿主isolate,以便宿主可以给它发送消息 ``sendPort.send(port.sendPort); ``// 监听消息 ``await ``for` `(var msg in port) { ``var data = msg[``0``]; ``SendPort replyTo = msg[``1``]; ``replyTo.send(data); ``if` `(data == ``"bar"``) port.close(); ``} } /// 对某个port发送消息,并接收结果 Future sendReceive(SendPort port, msg) { ``ReceivePort response = ``new` `ReceivePort(); ``port.send([msg, response.sendPort]); ``return` `response.first;DART概述:
1.面向对象
对于面向对象这个概念,相信了解Java的同学对这个概念一定不会陌生。
例如:我们有个Person Object他有很多特征和行为。
这些都是这个Person Object的属性。
也就是因为有了这些特征,行为等等才决定了这个人是谁。
那么回到Dart当中,所有的都是对象,那么在就可以可以跟进对象的属性的特征,方法等等来进行编程。
之所以我们在这里又特别强调了一下面向对象的概念,是因为这个概念在Dart语言当中,至关重要!
2.最重要的几个概念 在Dart语言中,所有的东西都是对象,无论是变量、数字、函数、null等都是对象,所有的对象都是Object类的子类。 Dart语言是强类型编程,一旦确定了类型,那么就不可以改变变量类型,在编译时会进行语法减产,但是Dart允许弱类型语言式的编程。 Dart代码在运行前解析,指定数据类型和编译时常量,可以提高运行速度。 Dart语言的统一入口是main函数。 Dart的私有特性是在变量或者函数名前面加上下划线_。 Dart支持async/await异步处理。
3.Dart的部分特性 Dart是AOT(Ahead Of Time)编译的,可编译成快速,可预测的本地代码。 Dart可以JIT(Just In Time)编译,开发周期快,为Flutter热重载提供基础。 Dart可以轻松创建60fps运行的流畅动画和转场。 Dart的声明式编程布局,易于阅读和可视化,不需要单独的声明式布局语言,如:XML,JSX。 Dart非常易于学习,具有静态和动态语言,编程人员都熟悉的特性。
4.Dart的内置库
包名
描述
dart:asynv
异步编程,提供Future,Stream类
dart:collection
集合
dart:convert
不同类型的字符编码解码
dart:core
Dart语言核心功能,内置类型
dart:html
网页开发用到的库
dart:io
文件读写,IO相关
dart:math
数字常量以及函数,随机算法等
dart:svg
事件和动画矢量图支持 总结:
综上述所说要想学Flutter,先学Dart!关于Flutter下篇我会讲到。为什么离不开dart!
有关更多面经、核心技术笔记;自己也是从事Android开发5年有余了;整理了一些Android开发技术核心笔记和面经题纲, 如有需要的同学请私信我回复"核心笔记"或"面试"领取!
苹果市值上3万亿美元中美科技公司市值盘点刚踏入2022年,苹果公司便在美国股市的新年开门红中,收获新年大礼。1月4日,苹果公司市值盘中一度突破了3万亿美元大关,这是继其成为全球第一家市值突破1万亿和2万亿美元之后,又一次
三年后国内最大市值的上市公司将是美团国内最大市值的上市公司将是美团,限制美团迅速成为最大市值公司的阻碍是只在香港上市。市场猜测腾讯将减持美团。不论腾讯是否减持美团,美团都将在三年后快速成为国内最大市值的公司。催化剂将
姚婷被华为选中的天才少女,刚毕业就被华为156万年薪邀请谢谢大家关注施杰弟谢谢谢谢谢谢今天给大家讲一个女博士的故事!她是华为天才计划中唯一一位女生,被称为中国最美女博士,刚毕业就被华为选中纳入麾下,年薪高达156万。为了进入华为,她当时
华为Mate50系列携手鸿蒙OS3。0归来,多项黑科技加持,机皇将回归在过去的一年中,智能手机市场相当活跃,但需要注意的是,华为虽然努力想跟上其它手机厂商的发布节奏,但因为芯片问题,新机的发布数量明显减少,自华为Mate40Pro之后,华为的每一款新
中国天眼验收近两年取得系列重要科学成果来源人民网馈源舱起舱跟踪,中国天眼开始工作。来源中国科学院国家天文台人民网北京1月6日电(记者赵竹青)被誉为中国天眼的500米口径球面射电望远镜(FAST),自2020年1月11日
2022年索尼电视新品发布会阵容一览首先,发布会上发布的产品不一定会在国内上市,届时国内上市的产品,发布会上可能没讲完。发布会介绍了五款电视,但是海报上有六款五款电视分别是8KMiniLED液晶电视Z9K4KMini
数科日报丨微信支持数字人民币支付泡泡玛特将打造首个线下乐园01丨腾讯接入数字人民币,微信支持数字人民币支付近日,数字人民币APP升级更新,微众银行(微信支付)数字人民币钱包随之上线。经前期多阶段可控试点后,腾讯开始为用户提供数字人民币服务
几十年前的老旧破损照片如何修复?模糊人脸修复,可以试试微信小程序AI玩图找专业修复老照片的设计师就可以修复了,现在做老照片修复的人也很多,头条,快手,抖音,淘宝都有做老照片修复的,最好是PS软件修复,黑白照还可以
mac系统适合哪些人?我现在有两台电脑一台Mac机和一台PC机。平时以Mac机为主。我试图来回答这个问题,供朋友们参考。过去很长一段时间,我一直是用PC机的,系统是WIndows。自从苹果手机和苹果的i
11岁的微信,在焦虑什么?撰文财经天下周刊作者赵雨潼编辑董雨晴一年一度的微信公开课活动如期在2022年1月6日这天到来了,照例这场大会会告诉公众过去一年发生在微信上的变化,以及新的一年,微信准备做点什么。但
芒格再度增持阿里巴巴,至去年年底持股已翻倍澎湃新闻记者孙铭蔚查理芒格再度增持阿里巴巴。1月4日美股盘中,股神巴菲特的亲密搭档查理芒格(CharlieMunger)旗下报纸和软件公司DailyJournalCorp披露增持阿