Dart 学习知识点一

1.打印当前时间

final time = DateTime.now();   //   2020-03-29 06:56:10.110523

2.在dart中,boolean必须是true,或者false不能是数字,否则报如下错误

      index.dart:6:7: Error: A value of type 'int' can't be assigned to a variable of type 'bool'.

3.a??=b; 表示如果a为空,则把b赋值给a,a不为空,则忽略b的值,(var a= b??1,如果b为空,则去a=1,不为空,取a=b)

4. ~/=表示取整,并赋值

var a = 3.14;
var b = 2;
print(b~/a); // 0 b除以a取整
print(b~/=a); // 0 b除以a取整,并赋值给b
print(b);// 0

5. 字符串和数字之间的转化

// 字符串转数字parse
String str = '123';
int a = int.parse(str);// 123
print(a);
// 数字转字符串
int c = 123;
String d= c.toString();
print(d);

6.isEmpty:判断字符串是否为空

//isEmpty:判断字符串是否为空
if (d.isEmpty) {
  print('true');
} else {
  print('false');
}

7.forEach、Map、where、any、evey区别

forEach:主要用于遍历

Map:用于遍历并返回值

where:用于过滤并返回过滤后的值

any:只要遍历中有满足条件的就返回true,否则返回false

every:遍历中的每一项都必须满足条件才返回true,否则返回false

8.函数参数可选位置参数[]和可选命名参数{}的区别

可选位置参数:main(int a,[int b,int c=1]),在调用的时候,b和c可传,可不传,main(1,2);

可选命名参数:main(int a,{int b,int c=1}),在调用的时候,main(1,b:2,c:3);如果想要参数必填,则用@required修饰

9.闭包的好处:常驻内存,且不污染全局代码,闭包也就是方法里面嵌套返回匿名方法的方法

10.区分构造函数中默认构造函数中参数的写法,一个类中默认构造函数只能有一个,命名构造函数可以写多个。最开始一直不理解,构造函数为什么要加{},现在才知道为什么。

class  Person {
     String name;
     int age ;
  // Person();// 默认构造函数
     Person(this.name,this.age);// 位置构造函数
  // Person({this.name,this.age});// 命名构造函数
     Person.getInfo(String name,int age){// 命名构造函数
      this.name = name;
      this.age = age;
     }
}
main(){
Person p= Person('李白',26);
// Person p = Person(name:'张飒',age:26);
print(p);
Person p2 =Person.getInfo('hehe',25);// 命名构造函数调用
print(p2.name);
p2.name = 'libai';
print(p2.name);
}

11.Person():name='li',age=16{}   构造函数执行之前执行的初始化操作

12.静态成员static:
     1.使用static关键字来实现级别的变量和函数

     2.静态方法不能访问非静态成员,非静态方法可以访问静态成员

     3.静态方法或成员变量,不需要实例化(或者说不使用this关键字),直接类名即可调用

13.dart是使用类和单继承的面向对象的语言,所有的对象都是类的实例,所有的类都继承自object。

    1.子类可以使用extend关键字来继承父类

     2.子类会继承父类的属性和方法,但是不会继承构造函数

     3.子类能复写父类的方法  getter和setter

14.多态就是父类定义一个方法不去实现,让继承自他的子类去实现,每个子类有不同的表现。

15.使用mixins的条件:
     1.作为mixins的类只有继承自Object,不能继承其他类

     2.作为mixins的类不能有构造函数

     3.一个类可以mixins多个mixins类

     4.mixins绝不是继承,也不是接口,而是一种全新的特性

     5.mixins的类型就是其超类的子类型。

16.async是让方法变成异步,await是等待异步方法执行完成。

17.async函数返回Future对象,普通返回值将包装成Future对象

18.可调用类

     如果想要一个类像函数一样执行,可以给类添加一个calll方法。

void main() async{
 var wf = aa();
 var out = wf('1','2','3');
 print(out);
}
class  aa {
  call(String a,String b,String c)=>'$a $b $c';
}

19.定义一个函数类型

 

void main() async{

}
// 定义函数的类型
typedef  Compare = int Function(int a ,int b);
class aaa {
  Compare compare;// 定义了一个函数
}

20.关键字var/const/final/dynamic有什么区别?

var:类型推导,一旦确定了类型,将不能修改类型,是用来修饰同类型的变量,变量的值可以变化

const:用来修饰常量的,不能运行时赋值

final:用来修饰一旦变量赋值就不能改变了

dynamic:用来类型可发生变化的

21.函数的参数分为必选参数和可选参数

可选参数:分为位置可选参数[]和命名可选参数{}

必选参数不能赋值默认值,只有可选参数才可以赋值默认值

箭头行数必须是单行的时候才可以使用,多行的时候不能使用

22.函数如果定义在类里面,称之为方法

23.dart默认提供了无参的构造函数,如果提供了有参构造函数,那么dart将不再提供无参构造函数

24.flutter不支持函数的重载,一个类里面不能出现名字相同的函数,要实现重载功能可使用命名构造函数

25.常量构造函数必须用final修饰,常量构造函数用来创建同一对象

26.工厂构造函数,在函数内部明确返回一个对象

27.抽象类不能被实例化

28.实现接口所有的方法都必须重写

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值