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

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 ,攀登上更高的高峰

相差1000元,小米13系列该怎么选?详细对比找答案小米13系列昨晚正式发布,相信许多小伙伴都看过相关介绍,但现在还是犹豫不知道选哪一款更好。本篇文章详细对比两款手机差异,希望这篇文章可以给你作为参考,选择喜欢的那款机型。屏幕小米1连花清瘟面前,美团和京东都认怂了最近几天,朋友圈里最牛的人,就是能买到连花清瘟的人。潘哥发现,如今的连花清瘟,成了紧俏货。不论是美团饿了么,还是淘宝京东拼多多,甚至是叮当快药1药网方舟健客药房网,想买到连花清瘟都奇瑞小蚂蚁为什么火?奇瑞新能源小蚂蚁为什么火,看看销量就知道了。根据乘联会数据,今年15月A00级纯电轿车累计销量近26万辆,市场占比高达33。3,已成为纯电动汽车的第一大细分市场。对比来看,A级和B台积电变美积电,伤害了谁?中国新闻网202212111542发表于北京以下文章来源于玉渊谭天,作者谭主越来越多的台积电工程师正陆续搭专机飞往美国亚利桑那州。在那里,有一个台积电斥资400亿美元新建的芯片制造苹果霸占中国高端市场!国产厂商交出答卷,第二个华为出现了这两年手机市场频频遇冷,但苹果在中国市场的市场份额却屡破新高,这表明高端手机市场有更强的韧性。过去两年的中国市场趋势显示,苹果公司的高端市场份额已明显领先华为,几乎成为中国高端手机放弃了华为mate40pro,入手了iPhone14pro一周后,体验差异太大篇前啰嗦本人之前一直是华为用户,上一部是Mate40Pro,这篇帖子主要谈谈入手一个月手机的优缺点和相对于华为来说的一些优势和不足。(ps我着重谈的缺点,篇幅较长只是为了让未入手的穿戴音箱深夜看球的不二之选感谢数字尾巴提供的众测产品倍思AeQur系列N10穿戴音箱。你是否遇到过这种情况情景1长时间的电话令你拿起手机的手发麻,特别是这个时候恰巧还有点别的事,还腾不出手?带个耳机呢一会就翻译年轻的火箭队准备起飞TheHoustonRocketsmaynotbeboundfortheplayoffsintheWesternConferencethisseason,butMondayswin达尔文错了?螃蟹竟在地球上出现了5次,相同形式为何不断出现?以前,人们相信生命形式都是固定存在的,比如羊,它们的过去和未来都只能是羊。然而,达尔文打破了这个传统,他相信生物可以通过进化创造无数最美丽的生命形式。这个观点极具开创性,因为以人类种菜真是种族天赋?我国宇航员在太空种水稻,首次结籽有何意义?随着本月四号晚的一道流星划过,神舟十四号飞船的返回舱完成了降落,陈冬刘洋蔡旭哲3名航天员纷纷表示出舱状态良好。这也预示着神舟十四号载人任务的完美收官,我国的载人航天科技,以及太空探为了羲和号奔向太空来源人民日报羲和号卫星示意图。上海航天技术研究院供图制图沈亦伶面前是一片光与火的海洋。烈焰洪流一般奔涌着喷发着,无声澎湃在恒星的表面。太阳是如此巨大,33万个地球相加,才能达到一个
中国移动云盘,属于2022年的专属回忆因为疫情第一次接触移动云盘2022年是一个神奇而且难忘的年度,断断续续的封控,到长达数月的居家,工作和生活混杂在同一个时间和空间里,难免会出现一些状况。以前也接触过一些网盘,共享云5G赋能旅游兴疆,中国电信为两冬会添数字云翼来源通信信息报社近日,阿勒泰整座城市喜气洋洋17公里长的街道上挂着喜庆的红灯笼,街心和路旁不时出现一个个造型各异的雪人雪雕雪墙等,各滑雪场游人如织,好不热闹,这一切欢畅热络的景象都泰国和韩日对中国游客态度真是天壤之别中国游客受到泰国英雄般的欢迎,这是互惠互利的事情,载有中国游客的厦门航空MF833航班刚刚落地泰国,人家泰国副总理兼卫生部长泰国交通部长奇乔布旅游和体育部部长都去曼谷素万那普国际机美苏冷战下的中国冷战是指1947年1991年之间,美国北大西洋公约组织为主的资本主义阵营与苏联华沙条约组织为主的社会主义阵营之间的政治经济军事等等一系列的斗争。1947年3月12日美国提出杜鲁门主TikTokSHEIN霸榜全球App!中国企业占榜单半壁江山近期,鲸网跨境从外网获悉,TikTok以6。72亿次下载量又一次成为全球下载次数最多的应用程序。而在购物类应用程序排行榜中,SHEIN成为2022年全球下载量之最。中国企业占据榜单出口翻倍新能源汽车目前已成为中国智能制造新名片央视网消息新能源汽车目前已成为中国智能制造新名片。中国汽车工业协会最新的信息显示2023年,新能源汽车继续免征车辆购置税,企业在新能源汽车产品方面进一步发力,预计2023年新能源汽中国科技公司强势回归CES展示新技术也不回避差距1月8日,2023年国际消费电子展CES在美国拉斯维加斯落幕。今年的展会相比前两年疫情期间恢复了不少生机,也吸引了近500家中国企业参展,尽管这仍然只有2020年新冠疫情前水平的一太抢手!到北京机票高达万元!韩国直飞中国航班机票几乎售罄韩国国内的旅游市场容量较小,航空免税酒店等行业都高度依赖国际旅客,疫情期间曾因国际人员往来受阻,遭受沉重的打击。不过,随着中国优化调整出入境政策,这些行业终于迎来了转机。今天仁川国北大学霸李雪琴强烈推荐荣耀平板V8Pro仅2599元起售闭眼买也划算不知道大家有没有发现,现在办公族学生族拥有平板的人数明显激增,平板产品本身就具备操作简便的优点,加上近两年功能性不断增强,自然就成为很多人的首选工具。尤其是荣耀平板V8Pro这款新佳能RF800mmF5。6,接近6位数的大炮实力如何?佳能在2022年上半年更新了RF800mmF5。6和RF1200mmF8两支超长焦定焦镜头,著名野生动物摄影师肖戈老师在第一时间入手了它们,今天我们就和大家一起分享下佳能RF800年货节电视怎么选?这五款75英寸画质好,买对不吃亏对于现在的年轻群体来说,电视使用的时间并不长,但是客厅中总不能缺少电视,有时候忙碌了一整天,回到家就可以娱乐一下。对于75英寸电视来说,大多数用户都比较喜欢,属于不大也不小,那么年