语法
在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
}