Dart基础语法2

dart2.13之后思维一些新特性Null safety、late关键字,空类型声明符?、非空断言!、required关键字

(1)Null safety翻译成中文意思是空安全,它可以帮助开发者避免一些日常开发中很难被发现的错误,并且额外的好处是可以改善性能。Flutter2.2.0之后的版本都要求使用null safety.

  ?可空类型    !类型断言

没办法把空(null)直接赋值给int类型

例:String? username=“张三”;

      Username=null;

      在String后面加一个问号表示username是一个可空类型。

同理,int和List后加一个问号也代表是可空类型,如果不加则表示是非空类型。

(类型断言!的用法)

(2)Late关键词主要用于延迟初始化,late关键词不仅用在类里面,也用在接口(抽象类)里面

如果构造函数里面没有初始化uri 的话,就会报错,但是在定义的类型前面加上一个late就可以解决这个问题

(3)required关键词:最开始required是注解,现在它已经作为内置修饰符,主要用于允许根据需要标记任何命名参数(函数或类),使得他们不为空,因为可选参数中必须有个require

 如果不指定默认值的话,在定义方法的时候就需要指定它的属性是个require属性

在参数前加上require表示是一个必须传入的参数

实例化不传入name的时候就是一个空 ,前面操作的时候得在类型后面加上?,才能这样操作,如果加上required就必须传入参数和值。

Dart性能优化常量、常量构造函数详解

(1) Dart 常量:final 和 consi

const声明的常量是在编译时确定的,永远不会改变
final 声明的常量允许声明后再赋值,赋值后不可改变,final 声明的变量是在运行时确定的
final不仅有const的编译时常量的特性,最重要的它是运行时常量,并且final是惰·性初始化

   Final可以先声明再赋值final a;

                          a=13;

                           Print(a);

   Const:const  a=13;print(a);

(2) dart:core 库中identical 两数的用法介绍如下


bool identical(
object? a, Object? b
检查两个引用是否指向同一个对象。

(3)const关键词在多个地方创建相同的对象的时候,内存中只保留了一个对象。(下面的例子o1,o2都没传入量(它们两个值一样的时候也可以),二者共享了一个存储空间)(const可以用相同的实例共享存储空间  )

dart中实例化类的时候可以不使用new关键词。

使用identica时,如果指向统一存储空间则为true,否则为false。

如果在object前面加上一个const,两个值一样则可以为true。值相等但是不用const修饰也是不能打印出true的。

常量构造函数总结如下几点:
1、构造数以const关键字修饰
2、const构造成数必须用于成员变量都是final的类
3、如果实例化时不加const修饰符,即使调用的是常量构造请函数,实例化的对象不会共用存储空间。
4、实制化常量构造通数的时候,多个地方创建这个对象,如果传人的值相同,只会保留一个
5、Flutter中const 修饰不仅仅是节省组作构建时的内存开销,flutter在重新构建组件时,不构建const声明组件。

  const用来构造函数,它里面的属性用final关键词 修饰,使用const是常量构造函数

相同的内容,用const用的是一块存储空间,不用const用的是很多块存储空间。

  • 16
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值