鉴于很多朋友私信让分享一些dart基础知识,今天就给大家分享一些dart基本操作!!!
- 变量:一旦附上值,他的数据类型就定了 不能在赋其他类型值
1.
var username = 'Flutter';//username 就定了是字符串类型
username = 123;//此时再赋整型就行报错
2.
Object和dynamic 都是大的类型
dynamic a = 'goood job'; //dynamic是可以推断出值是什么类型
Object b = 'goodd job';
print(a.length);
print(b.length);//b 是不具备length方法
- 常量:设置一次值之后就不能在变了
1.
final psw1 = 'Flutter';
2.
const psw2 = 'Flutter';
- 数据类型
int psw3 = 110;
double psw4 = 11.1;
//字符串转int
int psw5= int.parse('119');
double psw6 = double.parse('111.11');
//int转字符串
String psw7 = psw3.toString();
//四舍五入并且保留两位小数
String psw8 = 123.2262.toStringAsFixed(2);
print(psw8);//值是123.23
//bool类型
bool results = 123 > 110;
print(results);//打印结果:true
bool results = 1 == '1';
print(results);//打印结果:false
//List 是数组类型
List list = [1,3,5,7,9];//创建数组方式1
List newList = new List();//创建数组方式2
newList.add(2);//add 一个值进去
newList.addAll([4,6,8,10]);//add 一个数组进去
print(newList);//打印结果:2 4 6 8 10
print(newList.length);//打印结果:5
print(newList.first);//打印第一个值 打印结果:2
print(newList.last);//打印最后一个值 打印结果:10
print(newList[2]);//打印下标为2 的值 打印结果:6
//Map类型 对象类型
Map obj = {'x':1,'y':2,'z':3};//创建方式 1
Map newObj = new Map();//创建方式 2
newObj['x'] = 1;
newObj['y'] = 2;
print(newObj);//打印结果:{x: 1, y: 2}
print(obj.containsKey('x'));//判断是否包含x的key 打印结果:true
print(obj.containsKey('a'));// 打印结果:false
obj.remove('y');//删除Map中对应的值
print(obj);// 打印结果:{x: 1, z: 3}
- 定义方法
//无参 有返回值
//返回参数是字符串类型 方法名是getUserName
String getUserName(){
return 'hello world';
}
String userName = getUserName();//调用
//有参 有返回值
//返回参数是字符串类型 方法名getPersionInfo 接收的参数是userId
String getPersionInfo(int userId){
Map userInfon = {
'111':'zhangsan',
'222':'lisi',
};
return userInfon[userId.toString()];
}
String userId = getPersionInfo(111);//调用
print(userId);//打印结果:zhangsan
//可选参数
//1.可选参数 [ ] 中括号代表可选参数 不加中括号的话就是必传的参数
int addAge(int age1,[int age2]) {
return age1+(age2 != null ? age2 : 0);
}
int age = addAge(1,2);//调用
print(age);//打印结果:3
//2.可以给参数赋上默认值 赋上默认值要给参数加上大括号
int addAge2([int age1,int age2 = 0]){
return age1+age2;
}
int age2 = addAge2(1,2);//调用
print(age2);//打印结果:3
//匿名函数 for循环遍历数组
var list = ['abc','cde','afg'];
list.forEach((str){
print(str);
});
打印结果:abc cde afg
- 类的使用
//1.只是创建了一个类里面有2个属性
class Person {
int age;
String name;
}
p.age = 23;
print(p.age);
//2.具有实例化的方式创建一个类
class Person2 {
//1.可以给这个类定义一些属性
int age;
String name;
//构造函数 就是一个同名的方法
Person2(int age,String name){
this.age = age;
this.name = name;
}
//2.可以给这个类定义一些方法
void sayHello(){
print('My name is:'+this.name);
}
}
var p2 = new Person2(23,'zhansgan');//实例化的方式创建
print(p2.name);//打印结果:zhansgan
p2.sayHello(); //打印结果:My name is:zhansgan(调用了Person2里面的sayHello方法)
- 类的继承
//1.创建了Worker类 继承 Person2
class Worker extends Person2 {//继承用 extends
int salary;//比父类多了一个属性salary
Worker(int age, String name,int salary) : super(age, name){//新添了一个属性salary
this.salary = salary;
}
@override //告诉编译器 我重写了父类的同名方法
void sayHello(){
super.sayHello();//先调用了父类的sayHello
print('My salary is:'+this.salary.toString());
}
}
//外界使用
var w = new Worker(20, 'lisi', 1000);
w.sayHello();//打印结果是 先打印父类的sayHello方法 再打印Worker的sayHello方法
- dart 里面只能单继承 不能继承多个父类 如果有需要继承多个父类的需求需要用混合的方式实现
比如看下面例子:
//1.定义了一个Eat类
class Eat {
void eat(){
print('吃饭');
}
void sayHello() {
print('say hello in Eat');
}
}
//2.定义了一个Sleep类
class Sleep {
void sleep(){
print('睡觉');
}
void sayHello() {
print('say hello in Sleep');
}
}
//3.定义了一个Person类混合了Eat和Sleep类
class Person with Eat,Sleep {//多继承 把Eat 和 Sleep 都混合到Person 里面去 这时Person3就具备了eat和sleep的方法
//1.可以给这个类定义一些属性
int age;
String name;
//构造函数
Person3(int age,String name){
this.age = age;
this.name = name;
}
//2.可以给这个类定义一些方法
void sayHello(){
print('My name is:'+this.name);
}
}
var p = new Person(18, 'wangwu');
p.eat();//这时p 具备了Eat类的方法
p.sleep();//这时p 具备了Sleep类的方法
p.sayHello();//p 还具备了我自己的方法 //注意 如果混合的类里面有和自身类同名的方法的时候优先使用自身类的方法、其次是用混合最后一个类的方法
- 抽象类:就是我有一个想法 但是我不知道怎么实现。所以我就先把我的想法说出来。
抽象类不能实例化 所以用抽象类就是为了定义一个规则 让别人遵守这个规则
//定义一个抽象类
abstract class Animal {
//这是一个方法的实现
// void have_a_baby(){
// print(have_a_baby);
// }
//抽象方法 只有方法的定义
void have_a_baby();
}
//这时再创建一个类继承Animal抽象类
class Person extends Animal {
//1.可以给这个类定义一些属性
int age;
String name;
//构造函数
Person3(int age,String name){
this.age = age;
this.name = name;
}
//2.可以给这个类定义一些方法
void sayHello(){
print('My name is:'+this.name);
}
//3.实现have_a_baby 这时Person继承了Animal类。但是Animal类里面的方法没有实现,就会报错,此时需要子类实现这个方法
@override
void have_a_baby() {
// TODO: implement have_a_baby
print('have_a_baby');
}
}
网友评论