dart 的使用

159 阅读3分钟

语法

在dart中必须有一个main()函数

并且函数必须有一个返回值 比如 void 没有值

每一条语句后面必须加一个分号 否则会报错

void main(){}

以下都是写在main函数中

变量

var

1.使用var定义的变量 不能提升变量

print(a);
var a =100; //会报错

2.不能重复声明变量

var a = 100;
var a = 110;
print(a); //会报错

3.第一次赋值后 想要修改值的话 必须保证类型一致

var a = 100;
a = 'hello';  //会报错
a = 110; //会返回110
print(a);  

4.var后面可以加任何类型的数据 5.var后面可以放函数返回值

int sum(a,b)=>a+b;
var r = sum(1,2);
print(r);

final

定义常量

1.不能重复声明

final a = 110;
final a = 100; //会出错
print(a);

2.能修改对象中的值 不能修改其他的值

final a = {'name':'wangcai','age':100};
a['name'] = 'xiaoqiang';
print(a);  //{'name':'xiaoqiang','age':100}

final a = 100;
a = 110; //会出错
print(a);

3.声明和赋值要一起

final a ;
a = 100;  //会出错
print(a);

final a = 100;
print(a);  //会输出a的值

4.后面可以放函数返回值

int sum(a,b)=>a+b;
final r = sum(1,2);
print(r);

const

也是放常量 它比final要求更严格 const基本不用 都是用final

它和final的相同点

1.不能重复声明 2.声明和赋值要一起

不同点:

1.它后面不可以放函数返回值 2.它不能修改值 对象的值也不能修改

数据类型

Number (int double float)

int

是整型

int a = 100;
a = 1.0;  //会出错
a = 200;
print(a);

出错的原因是int是整型 它的 低于 double 不能转换

double

是小数

double a = 10.0;
a = 4.0;
print(a); //4.0

10是整型 之所以可以打印出 是因为double可以自动转换为int类型

String

既可以使用单引号 也可以使用双引号

String str = 'hello';
print(str);

当使用三个单引号 或者 三个双引号的时候 可以输出好多值

String str = ''' 
    hello
    world
''';
print(str);

当想在引号里面使用变量的时候 可以用${}包住 只有一个变量时 可以把{}省去

String a = 'you';
String b = 'welcome to ${a}';
String c = 'welcome to $a';
print(b);
print(c);

使用*n号 代表把这个值复制n份

String a = 'hello';
print(a*3); //hellohellohello

使用+号 进行拼接字符串

String a = 'hello';
String b = 'world';
print(a+b); //helloworld

List

相当于js中的数组

创建一个List

List a = [1,2,3'hello',true];
print(a); //[1,2,3,'hello',true]

创建一个List List是一个对象

List a = new List()

创建一个不可变的List 不能修改

List a = const[1,2,3];
a[0] = 100; //会报错 
print(a); 

创建一个固定类型的List

List a = <int>[1,2,3];
List b = <int>[1,'hello',3]; //会报错
print(a);

List中的方法

1.[], length

2.add(), insert() // insert 第一项是索引,第二项是 value

3.remove(), clear()

4.forEach() // 遍历数组,参数是一个匿名函数

5.indexOf(), lastIndexOf()...

Map(键值对)

相当于js中的对象

创建一个Map

Map a = {'name':'xiaoqiang','age':100};
a['name'] = 'wangcai';
print(a);  //{'name':'wangcai','age':100}

创建一个不可变的Map

Map a = const{'name':'xiaoqiang','age':100};
a['name'] = 'wangcai'; //不能改变 会出错
print(a);

使用new构建

Map a = new Map();

Map中的方法 [], length

isEmpty, isNotEmpty

keys, values

forEach()

函数

定义一个函数时 必须有函数的返回值类型 void String int 等 下面函数的返回值类型是String,形参是name和age name的类型是String age的类型是int 在传参的时候name必须传的是String age传的必须是int 否则会报错

它和js相比多了形参的类型和函数的返回值类型

String getPerson(String name,int age){
    return 'name=$name,age=$age';
}
void main(){
    String str = getPerson('wangcai',100);
    print(str);
}

在vue中使用类时 还需要把这个定义的类导出(export default)

然后在使用的地方导入(import)

在dart中不需要把类导出 只需要把类进行导入 在Person.dart中

class Person{
    String name = 'wangcai';
    int age = 100;
}

在04-类.dart中导入这个类

import './Person.dart';
void main(){
    var person = new Person();
    print(person.name); //wangcai
    print(person.age); //100
}

在vue中 new之后给这个类进行传值的时候 使用constructor()进行接收

而在dart中则需要对这个类进行重写 最后输入的内容是new之后传入的值 在Person.dart中

class Person{
    String name = 'wangcai';
    int age = 100;
    Person(this.name,this.age);
}

在04-类.dart中导入这个类

import './Person.dart';
void main(){
    var person = new Person('xiaoqiang',200);
    print(person.name); //xiaoqiang
    print(person.age); //200
}