游戏电视苹果数码历史美丽
投稿投诉
美丽时装
彩妆资讯
历史明星
乐活安卓
数码常识
驾车健康
苹果问答
网络发型
电视车载
室内电影
游戏科学
音乐整形

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

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

中国MarTech行业榜单发布,威沃数据荣登零售行业最佳服务11月21日由国内知名科技产业研究平台【第一新声】联合【天眼查】公布了数字新营销系列之2022年度中国MarTech行业系列榜单的评选结果,威沃数据荣登零售行业MarTech最……如何预防婴儿湿疹复发护理得当很重要一、回避引起过敏的食物宝宝的湿疹跟其自身的过敏体质有很大的关系,所以,要尽量避免让宝宝接触可能引起过敏的物质。对于尚未开始添加辅食的小婴儿来说,最常见的过敏原是牛奶蛋白。……李蔚如就义后,其遗体被运回到大顺乡,按照遗嘱,不办丧事,薄葬如果说,有的人生下来便是为了改造世界,那么李蔚如便是其中之一。出生于富裕家庭的他,从小便和其他的孩子有所不同,从小读过太多的救国书籍和民主宣传,也让他立志走向了一条别样的……修路发现千年汉墓,出土寒光闪闪的青铜剑,如同刚锻造出来一样2010年初受地震影响,108国道四川雅安荥经段被迫改道扩建,可出乎意料的是,人们在高山庙附近施工过程中,突然发现了一些古老斑驳的木板和碎陶片,上面还绘制着精美的纹饰,于是赶紧……明朝人会认同自己是一个比宋朝大的小国吗?不能低估古代疆域知名历史学者李亚平曾经断言,明朝的疆域只是比宋朝大一点。以研究宋史著称的历史学者而我国著名明史学家提出的两个重要论断不但对此进行了有力驳斥,其论断的思想性至今仍具有……中国男篮究竟输在哪里?巩晓彬的点评毫不客气,直接戳中要害中国男篮究竟输在哪里?巩晓彬的点评毫不客气,直接戳中要害比赛还剩42秒,徐杰一记三分手起刀落,完成了中国男篮的最后一攻,这也是中国男篮这场比赛敢于在三分线上出手的一个缩影……永远的丰碑永远的丰碑一一纪念毛泽东诞辰128周年关占彬循着时光的河流追望您伟岸的背影青水塘的残月几番轮回韶峰下的枇杷花又开了几度你草鞋上沾着闪亮……26!斯诺克世界冠亚军全部出局,43岁老将8杆破百挺进决赛北京时间2022年8月21日,斯诺克欧洲大师赛结束半决赛争夺,凯伦威尔逊6比5绝杀阿里卡特,率先挺进决赛。随后,43岁的巴里霍金斯以6比2大胜马克威廉姆斯,以无可争议的表现拿到……孤儿寡母VS八王议政清初内斗不断,为何还能成功入关?明清鼎革,八旗内部为争夺大位是你死我活,最后在孤儿寡母的领导下势如破竹地入主中原。那么,清初的权力格局到底怎么样?为什么在八旗内部纷争的前提下,还能斗而不破,一往无前?努……爱奇艺难解长视频困局绘图:杨佳12月初的爱奇艺,本应《风起洛阳》等多部年度大戏的热播而备受业界关注,谁料率先登上热搜的,却是企业大规模裁员的消息。据业内人士透露,为扭转持续亏损状况,爱……改革开放初期,为何邓小平叶剑英陈云王震都想到了荣毅仁?像荣毅仁,这样既了解东方(社会主义制度和计划经济),又了解西方(资本主义制度和市场经济)的企业家,实在是不可多得的。这是1985年,基辛格对荣毅仁做出的一段评价。荣……李小萌二胎超重超长产程,易胖体质生娃真难孕期控制体重很重要!从怀孕到分娩,每个妈妈都走得很艰难!前几天,顺产生下二胎的李小萌就分享了自己的艰难产程。因为易胖体质,让她和宝宝都超重,而要生一个胖宝宝,……
决定幼儿一生的观念父母的行为我们经常会发现,成年人面对同一事情的想法和做法完全不同。在现实生活中,这种差距经常被人们视为人的素质,但其实不是人的素质问题,而是人的观念差异问题。观念,是人的一种看法。……鼋头渚自驾从哪个门进?南北2个门8个停车场,低碳旅游,收获满鼋头渚自驾从哪个门进:1、从充山大门(南大门)进入,可以选择七十二峰山馆小车停车场、牌坊停车场停车;2、犊山大门(北大门)进入,可以选择樱花山庄停车场、兰苑停车场停车;3、除此……李世民称帝前,厉害的人物基本都在太子身边,为何李世民得胜了?一场玄武门之变让李世民如愿以偿地消灭了自己的最大竞争对手李建成。在这之后,普天之下再没有人能阻挡李世民当皇帝,纵使是李渊也不可能。不过,玄武门之变的惊心动魄让李世民每次回……东方战场里,少将石原莞尔为何敢和大将杉山元叫板?石原菀尔注定要为自己的狂妄付出代价,但也是中国抗战之幸,这厮是昭和军阀中鲜见的战略思路清晰者。他敢跟杉山元大将争辨,其一是对华侵略的指导思想存在严重分歧,其二是两个人分属日本军……巴特勒三双超詹姆斯升队史第一,热火113107湖人热火主场113107击败湖人,吉米巴特勒拿到热火时期第10个三双,超越勒布朗詹姆斯升至队史第一。安东尼戴维斯继续缺阵,热火洛瑞、希罗缺席。布拉德利、威少的中投帮助湖……JAVA从零到壹第16题猴子吃桃问题头条创作挑战赛作者简介:大家好,我是小虚竹。Java领域优质创作者,CSDN博客专家,华为云享专家,掘金年度人气作者,阿里云专家博主,51CTO专家博主技术活,该赏……袁隆平母亲华静动荡年代守护儿子,他写给母亲的信,看哭了读者世界上有一部饱含深情的书,那便是写做母亲的文字。世界上有一声最美丽的呼唤,那便是母亲喊我的名字。但丁母爱的力量是这个世界上最温情的光,一生都在照亮孩子远行的路,都说顾复之……国士无双的袁隆平,儿孙都是做什么的?是否子承父业?袁老有三个儿子,三个孙女,长子:袁定安;次子:袁定江;幼子:袁定阳。袁老曾说:人的身上,最值钱的东西是脑袋里的知识!所以在他的教导下,三个儿子一个比一个有出息。纪录片中出镜的三……官场无君子!鲍超遭刘铭传诬陷,李鸿章趁机捅刀,曾氏兄弟太现实淮军头号悍将刘铭传是李鸿章安徽合肥同乡,家中排行老六,小时候生过天花,脸上留有麻子,长相短小粗犷,个性生猛火爆,江湖人称六麻子。刘铭传年轻时贩过私盐,十八岁时就杀过人。……当活着比死更痛苦波兰奥斯威辛集中营集中营的门口,上面写着劳动带来自由,最恶心的谎言纳粹抓了共产党人的时候,我沉默了;我又不是共产党人。当他们关了社民党人的时候,我沉默了;我又……新时代文明实践芝罘翡翠社区举办文明旅游宣传大小新闻客户端3月23日讯(YMG全媒体记者钟嘉琳通讯员崔雪)近日,烟台芝罘区毓璜顶街道翡翠社区党委联合辖区旅行社的党员志愿者举办科普启明旅游维权宣讲会,为居民开展文明旅游宣传……民国时代,当时执政者应该不至于都对滥发纸币的后果一无所知吧,法币点香烟,金圆券擦屁股(国府在大陆失败系列之二)本文章为萨沙原创,如果转载请务必注明中国历史上几乎所有的皇朝都是被无法生存的人民推翻的!老百姓不管你是什么皇帝什么……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网