2022-01-06 flutter-dart语法

2022-06-02  本文已影响0人  忙于未来的民工

变量声明:

var:可以接受任何类型的变量,一旦定义,后期不可修改。

所有类型都继承自object,所以object类型可以承接任意类型的值。

dynamic:是一种特殊的数据类型,在编译时不进行类型检查,运行时才检查,类似于js的弱类型语言

dynamic 和 Object:可以接受任何类型的值,并且后期可以随意修改,不同之处在于dynamic声明的属性可以调用任何属性或者方法(编译时不检查),而object声明的对象只能调用object上有的属性和方法

final和const:两个都是声明常量,只能被赋一次值,区别是final是初始化时赋值,而const在编译时就被赋值不能改变。

常量:const、final

类似于js的弱引用:var、dynamic、object

强引用:int、double、String、List、Map

推荐用法:使用var 定义变量即可,dart会自动进行类型推断

函数:

void fn ({var str1 = 1, var str2 = 2, [var dev = 'sss']}) {}

返回值为空,同时设置默认值,参数包含可选参数

String fn (var str1 , var str2 , [var dev = 'sss']) {}

返回值为Sttring,没有默认值,参数包含可选参数

区别:如果需要默认值,参数需要用大括号括起来,也就一个对象,推荐使用默认值参数

类:

只能单继承

介绍: const VideoPage({Key? key, required this.videoUrl}) : super(key: key); 这段代码是一个构造函数,this.videoUrl 意思是 直接将传过来的 videoUrl 参数赋值给 videoUrl 变量,super(key: key) 意思是 调用父类的构造函数。@override 意思是 重写父类的createState 方法。在该方法中,创建_VideoState实例,该实例成为 VideoPage 的属性

抽象类:类似于协议,抽象类中定义的方法,在子类中是必须实现的。

混入:

mixin 类似于vue的mixin,区别是dart的mixin如果出现同名的方法,不会依次调用,而是直接覆盖。

Future: 

异步执行,类似于 promise。据说一模一样。同样也有async、await

空安全:

在dart中一切皆对象,我们在给一个值定义时必须初始化,如果不初始化,则需要添加late关键字,意思是后期再初始化,在使用前必须初始化,否则会报错。

int ? i; // 使用前必须判空,并且在使用的时候需要加 !目的是高诉编译器该变量不是空了。例子如下:

if(i != null){ print( i! * 8)}

is、as、is!:判断类型、转类型

上一篇下一篇

猜你喜欢

热点阅读