??

// 如果b为null则赋值,否则保持原样
b ??= value;

级联符号..

querySelector('#confirm') // Get an object.
..text = 'Confirm' // Use its members.
..classes.add('important')
..onClick.listen((e) => window.alert('Confirmed!'));
相当于
var button = querySelector('#confirm');
button.text = 'Confirm';
button.classes.add('important');
button.onClick.listen((e) => window.alert('Confirmed!'));

方法可选参数:

可选的命名参数, 定义函数时,使用{param1, param2, …},用于指定命名参数。例如:

 //设置[bold]和[hidden]标志
void enableFlags({bool bold, bool hidden}) {
// ...
}
enableFlags(bold: true, hidden: false);

可选的位置参数,用[]它们标记为可选的位置参数:

  String say(String from, String msg, [String device]) {
var result = '$from says $msg';
if (device != null) {
result = '$result with a $device';
}
return result;
}
say('Bob', 'Howdy'); //结果是: Bob says Howdy
say('Bob', 'Howdy', 'smoke signal'); //结果是:Bob says Howdy with a smoke signal

默认参数

下面是为命名参数设置默认值的示例:

  // 设置 bold 和 hidden 标记的默认值都为false
void enableFlags2({bool bold = false, bool hidden = false}) {
// ...
} // 调用的时候:bold will be true; hidden will be false.
enableFlags2(bold: true);

匿名函数

 var list = ['apples', 'bananas', 'oranges'];
list.forEach((item) {
print('${list.indexOf(item)}: $item');
}); //简写
list.forEach((item) => print('${list.indexOf(item)}: $item'));

字符串转JSON

var jsonData = JSON.decode('{"x":1, "y":2}');

枚举类型

 enum Color {
red,
green,
blue
}

接口协议implements

/*
定义一个DB库 支持 mysql mssql mongodb
mysql mssql mongodb三个类里面都有同样的方法
*/
abstract class Db{ //当做接口 接口:就是约定 、规范
String uri; //数据库的链接地址
add(String data);
save();
delete();
} class Mysql implements Db{
@override
String uri;
Mysql(this.uri); @override
add(data) {
// TODO: implement add
print('这是mysql的add方法'+data);
} @override
delete() {
// TODO: implement delete
return null;
} @override
save() {
// TODO: implement save
return null;
} remove(){
}
}

多接口

abstract class A{
String name;
printA();
} abstract class B{
printB();
} class C implements A,B{
@override
String name;
@override
printA() {
print('printA');
}
@override
printB() {
// TODO: implement printB
return null;
}
}

多继承

mixins的中文意思是混入,就是在类中混入其他功能。

在Dart中可以使用mixins实现类似多继承的功能

因为mixins使用的条件,随着Dart版本一直在变,这里讲的是Dart2.x中使用mixins的条件:

1、作为mixins的类只能继承自Object,不能继承其他类

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

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

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

class A {
String info="this is A";
void printA(){
print("A");
}
} class B {
void printB(){
print("B");
}
} class C with A,B{ //具有A类B类所有的方法
} void main(){
var c=new C();
c.printA();
c.printB();
print(c.info);
}

最新文章

  1. Sql Server系列:排序函数
  2. transformClassesWithDexForDebug
  3. linux清理内存
  4. linux 拨号+squid监控脚本
  5. http://www.cnblogs.com/Matrix54/archive/2012/05/03/2481260.html
  6. Part 32 Abstract classes in c#
  7. MvvmCross for WPF File Plugin
  8. Android(java)学习笔记140:SpannableString类的使用
  9. Java Fx-安装E(FX)CLIPSE IDE
  10. 【转】Memcached管理与监控工具----MemAdmin
  11. WPF使用RoutedCommand自己定义命令
  12. JavaScript实现接口的三种经典方式
  13. 如何查看卖家ID (Merchant ID) 亚马逊哪里找?
  14. .Net RabbitMQ系列之环境搭建于RabbitMQ基本介绍
  15. DELL OME监控服务器安装配置
  16. spring(一、原理、IOC、AOP、依赖注入)
  17. 洗礼灵魂,修炼python(57)--爬虫篇—知识补充—编码之对比不同python版本获取的数据
  18. 浅谈UI自动化测试
  19. 【HDOJ1598】【枚举+最小生成树】
  20. #C++初学记录(算法4)

热门文章

  1. IIS 程序池优化配置方案
  2. C# 类的继承和访问
  3. 从rc文件访问字符串
  4. 【BZOJ2752】【Luogu P2221】 [HAOI2012]高速公路
  5. 【hiho1035】自驾旅行III
  6. String中的intern方法
  7. Iview 在Table组件中添加图片
  8. 在Spring MVC 中配置自定义的类型转换器
  9. 命令方式 搭建 (简易)Maven项目
  10. 高可用,多路冗余GFS2集群文件系统搭建详解