如果你不仅是前端程序员,同时还具备面向对象编程语言(如Java,C#)的经验,那么上手dart会非常简单,半天即可。
目录
变量声明
1.var
与javascript中的不同的是,一旦被赋值类型就确定了,不能更改其类型;
var name = 'dart';
// 下面代码会报错
name=100
因为dart不同于javascript,是强类型语言。当var声明一个变量后,dart在编译时会根据其第一次赋的值来推动其数据类型,类型一旦确定就无法更改。
2.dynamic和Object
dynamic,Object声明的变量可以赋值任意对象,且后面可以改变其类型。
Object类似Java中的基类Object,Dart中的所有类都是其子类。
dynamic和Object不同点,dynamic声明的变量对象能使用所有可能的属性方法,而Object只能使用Object自己的属性方法。
dynamic a='dynamic'
Object b='Object';
// ok
a.length
// 出错,因为Object没有length属性
b.length
3.final和const
若不打算改变变量的类型,可以用final或const修饰。
两者的不同点在于,const修饰的变量在编译时会被替换成常量,final在第一次使用时初始化。
被final或const修饰的变量,可以省略变量类型。
4.空安全
在dart引入空安全之前,如果定义了一个变量,在初始化其之前就访问了,此时就会报错。
有了空安全后,定义变量时可以指定是否可空。
int i=1; // 不可空,必须定义时初始化
int? j; // 可空,注意在使用前必须初始化
late int m; // 如果是不可空,但定义时想稍后对其初始化,可以加上late
显示告诉编译器,可空变量已经不是null了,可以在后面加上!
int? i;
...
fun(i!)
若可空变量是函数,调用时可以:
Function? fun;
...
fun?.call(); // 表示函数若为null不会调用
5.函数
flutter的函数和javascript中的有些相似,有一个Function类型。
此处只讲下可选的命名参数,其在flutter中随处可见。
// 定义函数时可以这样
void show({String name,int age}){
...
}
// 调用函数时
show(name:'xxx',age:100);