范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

Flutter从入门到精通之Dart语言这一篇就够了

  前言
  Dart  是由  Google 主导开发 ,于2011年10月公开;它的开发团队由  Google Chrome  浏览器 V8 引擎团队的领导者拉尔斯·巴克主持,目标在于成为 下一代结构化 Web 开发语言
  Dart  也是一种 面向对象语言 ,但是它采用基于 类编程 ; Dart  的 设计目标 应该是既对标  Java ,也对标  JavaScrip t, Dart  在 静态语法方面 和  Java  非常相似,如 类型定义、函数声明、泛型 等,而在 动态特性方面 又和  JavaScript  很像,如 函数式特性、异步支持 等,因此  Flutte r 便成为了 跨平台 行业一个 热点
  想要学习开发 Flutter 首先就要先了解 Dart 语言的基本概念 Dart 基本概念
  Dart 是面向对象的语言 ,和许多面向对象语言有着很接近的语法,如果你学过  C++,C#,Java  那么你只需要很短的时间就可以掌握  Dart ,并且  Dart 语言具有以下几个特点: Dart 是谷歌开发的开源的面向客户端的开发语言 Dart 可帮助开发者开发富有表现力的,高性能的客户端应用;它具有功能强大的框架,灵活易用的工具。 客户端友好,非常适合开发移动和 Web 应用
  一个简单的Dart程序大概长这个样子: // 定义函数 printInteger(int aNumber) {  print("The number is $aNumber."); // 打印输出 }  // 应用执行入口 main() {  var number = 42; // 声明和初始化变量  printInteger(number); // 调用函数 }Dart 核心概念
  如果你要深入学习 Dart 请谨记以下这些核心概念: Dart  中所有 变量 都是 对象(object) ,每个对象都是某个类的实例,包括  number, function, null 以及 object ;所有的对象都继承自 Object 这个超类。 Dart 是强类型语言 ,尽管这样,声明变量也可以不指定变量类型 Dart 可以自动推断一个变量的类型 ,就像上面的例子 变量 nunber 被自动推断为 int 类型 如果一个变量不确定是何种类型或者可以接受任何类型,那么你可以使用特殊类型: dynamic 来声明一个变量 /// Returns a Boolean representation for [arg], which must /// be a String or bool. bool convertToBool(dynamic arg) {  if (arg is bool) return arg;  if (arg is String) return arg == "true";  throw ArgumentError("Cannot convert $arg to a bool."); }Dart 支持泛型 ,比如: List   (int类型元素的数组)、List  (包含可能任何object类型元素的集合)Dart 支持顶级函数 (例如main()),以及 绑定到类或对象的函数 (分别是静态和实例方法)你还可以在函数内创建函数(嵌套函数或本地函数) 类似地, Dart支持顶级变量 ,以及 绑定到类或对象的变量 (静态和实例变量);实例变量有时称为字段或属性 与 Java,C# 等不同 , Dart 没有 public,protected 和 private  这些访问修饰符,私有变量或方法会以下划线(_)开头来表示 Dart  里的 变量或标识符 必须是以 字母或下划线 开头的 字母、下划线、数字的组合 注意区分表达式 (expressions have runtime values)和语句(statements don"t have runtime values),;比如 条件表达式: condition ? expr1 : expr2, 会返回值 expr1 或 expr2,比较下 if else 语句,不具有值;语句通常包含一个或多个表达式,但表达式不能直接包含语句 Dart 工具具有两种类型异常提醒:警告和错误 ;警告代表你的代码可能有问题,但是不会阻止程序的运行;错误分为编译错误和运行错误,前者会阻止程序的运行,后者则会在程序运行使抛出异常!
  我们可以把 Dart 中的类可分为两大类:  泛型类 和 非泛型类 先说 非泛型类 也就是开发中接触最多的一般类,一般的类去定义一个变量的时候,它的 类 实际就是这个变量的类型. 例如定义一个 Student 类,我们会得到一个 Student 类型 泛型类比非泛型类要更加复杂 ,实际上 一个泛型类可以对应无限种类型 。为什么这么说,其实很容易理解;在定义泛型类的时候会定义泛型形参,要想拿到一个合法的泛型类型就需要在外部使用地方传入具体的类型实参替换定义中的类型形参 我们知道在  Dart 中  List   是一个类,它不是一个类型 ;由它可以衍生成无限种泛型类型。例如 List、List、List>、List>  何为子类型
  我们可能会经常在  Flutter 开发中遇到 subtype 子类型的错误:   type "String" is not a subtype of type "num" of "other"  . 到底啥是子类型呢? 它和子类是一个概念吗?
  首先给出一个数学归纳公式: 如果 G 是一个有 n 个类型参数的泛型类,而A[i]是 B[i] 的子类型且属于 1..n 的范围,那么可表示为 G * G 的子类型,其中 A * B 可表示 A 是 B 的子类型。
  我们一般说 子类 就是 派生类 ,该类一般会 继承 它的 父类 (也叫 基类 );例如:  class Student extends Person{//...}  ,这里的 Student 一般称为 Person 的 子类
  而 子类型 则不一样,我们从上面就知道一个类可以有很多类型,那么子类型不仅仅是想子类那样继承关系那么严格
  子类型定义的规则一般是这样的:  任何时候如果需要的是 A 类型值的任何地方,都可以使用 B 类型的值来替换的,那么就可以说 B 类型是 A 类型的子类型或者称 A 类型是 B 类型的超类型 Dart 语言可选类型
  在  Dart  中的 类型 实际上是 可选 的,也就是在  Dart  中 函数类型,参数类型,变量类型 是可以直接 省略 的 sum(a, b, c, d) {//函数参数类型和返回值类型可以省略   return a + b + c + d; }  main() {   print("${sum(10, 12, 14, 12)}");//正常运行 }
  上述的  sum   函数 既没有 返回值类型 也没有 参数类型 ,可能有的人会疑惑如果  sum   函数 最后一个形参传入一个  String   类型 会是怎么样
  答案是: 静态类型检查分析正常但是编译运行异常 sum(a, b, c, d) {   return a + b + c + d; }  main() {   print("${sum(10, 12, 14, "12312")}");//静态检查类型检查正常,运行异常 }  //运行结果 Unhandled exception: type "String" is not a subtype of type "num" of "other" //请先记住这个子类型不匹配异常问题,因为在后面会详细分析子类型的含义,而且Dart、Flutter开发中会经常看到这个异常。  Process finished with exit code 255
  虽然, 可选类型 从一方面使得整个 代码变得简洁 以及 具有动态性 ,但是从另一方面它会使得 静态检查类型难以分析
  但是这也使得  dart  中失去了基于类型 函数重载 特性;我们都知道 函数重载 是 静态语言 中比较常见的 语法特性 ,可是在  dart  中是 不支持 的
  比如在 其他语言 我们一般使用 构造器重载 解决多种方式 构造对象 的 场景 ,但是  dart 不支持构造器重载 ,所以为了解决这个问题, Dart 推出了命名构造器的概念 ;那可选类型语法特性为什么会和函数重载特性冲突呢?
  我们可以使用反证法,假设 dart 支持函数重载,那么可能就会有以下这段代码: class IllegalCode {   overloaded(num data) {    }   overloaded(List data){//假设支持函数重载,实际上这是非法的    } }  main() {     var data1 = 100;      var data2 = ["100"];     //由于dart中的类型是可选的,以下函数调用,根本就无法分辨下面代码实际上调用哪个overloaded函数。     overloaded(data1);     overloaded(data2); }
  如果仅从可选类型角度去考虑的话 ,实际上  dart  现在是可以 支持基于类型的函数重载 的,因为  Dart 有类型推导功能 ;如果 dart 能够推导出上述 data1 和 data2 类型,那么就可以根据推导出的类型去匹配重载的函数
  实际上,Dart 官方在 Github 提到过 Dart 迁移到新的类型系统中,Dart 是有能力支持函数重载的
  我们喜欢  Flutter  的一点是,它不仅仅是 谷歌的产品--它是一个 "所有人 "的产品 ; 开源 意味着我们都可以 参与其中 ,并与它的成功 息息相关 ,无论是通过贡献 新的代码或文档 ,创建赋予 核心框架 新的超能力的包,编写教导他人的 书籍和培训课程 ,还是帮助 组织活动和用户组
  为了展示  Flutter 社区 的 最佳状态 ,我们最近与  DevPost 合作 赞助了一个 Puzzle Hack  挑战,为 开发者 提供了一个 机会 ,通过用  Flutter  重新想象经典的 滑动拼图 来展示他们的 技能 ;这证明了 网络、桌面和移动的完美结合 ;现在我们都可以 在线或通过商店 玩这些游戏
  今天我们对  Flutter Dart 语言 的概述就到这里了,有需要了解更多关于  Flutter  的 相关资讯 ;可以 私信 发送  "进阶"  ,即可获取一份  Fultter 开源学习手册 ,以便大家能够更好的学习  Fultter
  内容展示如下: Dart 语法基础Dart 语法详解 编译原理 Dart 语言基础详解(变量、内置类型、函数、操作符、流程控制语句) Flutter(Dart)基础——类的详解 Dart 初始化列表 Dart 的构造方法及属性(setter/getter) Dart 构造方法 Dart 的工厂构造方法 Dart 之 Mixin 详解
  Dart 语法进阶Exception 类型 Error 类型 异常抛出 异常捕获 类 泛型 异步
  完整版 Fultter 开源学习手册 获取方式:私信发送 "进阶"即可 直达获取Flutter 3.0 项目实战Flutter 底部导航路由实现 底部导航实现 Widget 属性说明 Page 存在重复创建的问题 Flutter 创建侧滑菜单 个人中心制作 简单个人中心 商城会员中心 Flutter 实战 APP 入门及主页
  Flutter 3.0 线程Flutter 事件队列 应用场景 实现思路 具体实现 async await 原理解析 Future Dart 的消息循环机制 最常用的 async 和 await Promise 对象的基本用法 Flutter 多线程
  文章篇幅有限,知识点图片就不做完全展示了;有需要这份 Fultter 开源学习手册的朋友:可以私信发送 "进阶"即可 直达获取Fultter 学习手册目录
  对于程序员来说,要学习的知识内容、技术有太多太多,要想不被环境淘汰就只有不断提升自己,从来都是我们去适应环境,而不是环境来适应我们
  技术是无止境的,你需要对自己提交的每一行代码、使用的每一个工具负责,不断挖掘其底层原理,才能使自己的技术升华到更高的层面
  最后祝各位开发者早日精通 Flutter ,攀登上更高的高峰

1946年谢文东流窜深山,贺晋年苦寻未果后,突然想起毛主席的绝招1946年,在剿灭盘踞多年的大匪徒谢文东的战斗中,因为谢文东的狡猾,导致我军战斗一度陷入被动局面,总指挥贺晋年想起了毛主席的教导,最后才一举扭转局势,彻底拿下谢文东。审判大会上的谢毛主席让军区司令对调,只有八个军区执行,另外三个军区不动1973年,中央的一次全会上,毛主席提出现在有些军区司令员在一个岗位上呆得时间太久了,对自己管辖区有些松懈了,有些油了。有些军区还出现了一个人说了算的情况,这样不好。建议各个军区的金庸武侠已成为连接香港和内地文化交流的纽带国庆长假第一天打卡了金庸武侠展在内地的首展武汉站金庸展,具体地点在湖北省图书馆一楼。虽然要提前预约入场,依然有不少年轻人排队来看展。有些女孩还特意穿了汉服前来,当汉服遇到武侠,一下河南南阳卧龙岗文化园开园缘起卧龙岗,三顾南阳城。10月1日,河南南阳卧龙岗文化园开园,以高质量文化和旅游供给增强人民群众的获得感幸福感。上午8时30分,卧龙岗文化园开园仪式正式开始,南阳市委书记朱是西宣布聊城再添新坐标,这个假期共赴一场文化之约10月1日,聊城市图书馆新馆正式开馆运行。该馆气势恢宏藏书丰富设备先进环境优雅,是一座充分展现智能化数字化和人性化特征的现代化公共图书馆。新馆地址旅游度假区松桂大街以北郭屯街以南清国庆旅游丨近郊短途游城市文化馆体验游受青睐国庆假期,近郊短途游城市文化馆体验游,成了不少市民的选择。北京八达岭长城游受青睐国庆假期,登长城感受祖国大好河山成了不少游客的选择。长城之上,游客手持国旗,以雄伟的长城为背景,用相黄帝内经教给我们的强健身体的养生原则本篇是彭博士讲黄帝内经系列精华篇之五百九十五。(更多精彩内容持续更新中)夫五臟者身之強也。頭者精明之府,頭傾視深精神將奪矣。背者胸中之府,背曲肩隨,府將壞矣。腰者腎之府,轉搖艱難,国家公园论坛丨海南师范大学美术学院院长张引黎族文化赋予了海南热带雨林国家公园人文价值海南省陵水县吊罗山热带雨林国家公园郁郁葱葱景色如春图据ICphoto红星新闻记者丨罗梦婕宋昕泽编辑丨余冬梅郭宇他年谁作舆地志,海南万古真吾乡。900多年前,当东坡居士苏轼被贬谪海南夜游夜演夜购夜娱这个国庆浔城文化旅游越夜越美(邱春梅)流光溢彩不夜天,华灯璀璨耀浔城。10月1日晚8时许,在素有中心城区市民休闲网红打卡地的烟水亭外广场上,游客市民摩肩接踵,在浔阳喜市福满浔城舞台前观看国潮演出,在满眼小彩灯2022首届天柱山国风文化节启动大皖新闻讯10月2日,2022首届天柱山国风文化节在天柱山正式启动。国风特色活动异彩纷呈,吸引游客驻足围观。当天,伴随着悠扬琴声,2022首届天柱山国风文化节正式拉开序幕。国风达人西安一女子凌晨悬挂天桥,桥下施工渣土车队与路人合力救援10月2日,陕西西安。一则女子悬挂天桥众人合力救援的视频引起众多网友点赞。据视频显示,一位着白色长袖牛仔长裤的女子全身悬挂于天桥外,天桥上的人正努力把她拽上去,而天桥底下一辆停着一
俄罗斯为什么对乌克兰发动特别军事行动?为什么俄罗斯一直宣称不会入侵乌克兰?俄罗斯为什么对乌克兰动手?俄罗斯一直警告乌克兰不要加入北约,而乌克兰却把加入北约写入宪法。而乌克兰一但加入北约,就会把军队核武器部署到乌克兰。这今年春运国内航班量日均过万,国际航班量暂无明显增长据飞常准民航看板数据预计,自2022年12月7日新十条发布后,国内客运航班量稳步提升,当前国内航线单日客运航班量已涨至8000班次以上,预计2023年春运期间(1月7日2月15日)遮羞布被撕,中国芯片竞争优势凸显,又征服一家美国科技巨头据外媒报道指美国科技巨头微软正在测试新一代的surface平板电脑,这款平板电脑获得关注在于它是首次采用中国的芯片,业界人士猜测为紫光展锐的虎贲T820,这让美媒颇为愕然,中国芯片独家远程拟美国上市,市值冲击300亿美元中国新能源商用车公司,正准备在海内外掀起风浪。穹眼财经独家获悉,远程商用车科技公司正在筹划在美国上市。12月27日,远程新能源商用车科技公司宣布2023年拟完成A轮融资,年销量冲击京东超市联手广西商务厅举办线上年货节数百款低价爆品助力区域品牌走向全国随着京东年货节的临近,众多品牌商家平价好货区域特色商品即将汇聚京东,为消费者带来一场充满年味的年货盛典。近日,京东联合广西壮族自治区商务厅推出广西桂品年货大集专区。在岁末年初之际,如何求解简单情况下的纳维尔斯托克斯方程?张朝阳的物理课推导三角管中的流量公式如何求解简单情况下的纳维尔斯托克斯方程?三角管中粘性不可压缩流体的流量与什么有关?张朝阳的物理课第一百一十二期在12月30日12时开播,搜狐创始人董事局主席兼CEO张朝阳坐镇搜狐视给明星化妆的人,不简单谢丹又一次下单了。护肤品化妆品衣服包包,她忍不住统统纳入囊中。不过,她的钱包杀手不是购物节满减促销,而是另一个漂亮的女孩,星图达人陈奶酪Yuki(以下简称陈奶酪)。过去几年时间,谢有一种幸福叫回家有一种幸福叫回家。家,是一个富含温暖的名字。家,是一个心灵停靠的港湾。家,是一个温情脉脉的栖息地。回家,让人充满着期待。在外多苦多累,只要想到回家,心便充满了力量。家,对于每一个人坦克500PHEV现身广州车展,外观没惊喜,油耗成亮点?近日,坦克品牌旗下的首款新能源越野SUV坦克500PHEV亮相广州车展。作为坦克500的插混版车型,该车定位中大型SUV,将配备带Mlock机械锁止的智能四驱系统。外观上,新车延续詹姆斯妻子和母亲到场观战给我动力,她们见证了我的一切今日,湖人130121客场击败老鹰。赛后,湖人前锋勒布朗詹姆斯在场边接受了采访。谈到他的心态进化是否战胜了身体的疲劳,詹姆斯说绝对的。归根结底,比赛就是比赛。我甚至都不知道这是四天解德辉宁静致远山西交口云梦山冰塔(云梦山全景陈树青摄)交口县石口镇有一座海拔1778米的云梦山,山因峰峦叠嶂,云蒸霞蔚,素有云仙梦境之美称,故名云梦山。又因山间有一处裸露的高达数十丈的悬崖石壁造就了绝壁寺庙道观天