1. ?.
??
/**
* 1、条件运算符(?) 如果对象没实例化 或者是null 加上?不会报错
*/
Person p;
p?.printInfo();
??
表示前者有值取前者,否则取后者
2. 关键字 dynamic
什么作用
dynamic类型具有所有可能的属性和方法。Dart语言中函数方法都有dynamic类型作为函数的返回类型,函数的参数也都有dynamic类型。
其实dynamic不是实际的type,而是类型检查开关。一个变量被dynamic修饰,相当于告诉static type 系统“相信我,我知道我自己在做什么”。
例如
dynamic d_name; //不要进行类型检查了。即使出错了,是我自己的责任。
Object o_name;//v_name不是别人,就是Object的实例化。
3. 关键字 get
如何使用
abstract class MyStringBase {
String get welcomeMessage;
}
4. 关键字 as
的使用
as 好像是类型转化,上转型下转型?
static MyStringBase i18n(BuildContext context) {
return (Localizations.of(context, MyLocalizations) as MyLocalizations).currentLocalization;
}
5. 关键字 with
on
的使用
mixins
是要通过非继承的方式来复用类中的代码。
class _LoginPageState extends State<LoginPage> with LoginBLoC {
}
mixin LoginBLoC on State<LoginPage> {
}
继承 -> extends
mixins -> with
继承和mixins是一样的,是语言的特性,with
和 extends
是关键字。
on
只能用于被mixins标记的类,例如mixins X on A,意思是要mixins X的话,得先接口实现或者继承A。这里A可以是类,也可以是接口,但是在mixins的时候用法有区别.
List的使用
1. .map
遍历渲染
children: tabs
.map((Tab tab) =>
Container(child: Center(child: Text(tab.text),),))
.toList()),