dart

Dart | 基础学习笔记

2020-09-17  本文已影响0人  清無

基本数据类型

Number

String

Boolean

List

Set

Map

Rune

函数

Function类

运算符

算数

类型判定

赋值运算符

条件表达式

级联运算符

querySelector('#confirm') // 获取对象。
..text = 'Confirm' // 调用成员变量。
..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!'));

可选类型(类似swift的Optional)

控制流程语句

if-else

for

switch-case

assert

枚举

enum Color {

red, green, blue
}

Color.red.index == 0;

Color.values[0] == Color.red;

异常

try-catch

rethrow

finally

Dart 是一种基于类和 mixin 继承机制的面向对象的语言。

继承用extends关键字;
实现多个接口(抽象类)用implements关键字;
重写父类方法用@override关键字;

获取对象的类型

实例变量

构造函数

  1. 如果希望使用父类中定义的命名构造函数创建子类, 就必须在子类中实现该构造函数。
  2. 默认情况下,子类的构造函数会自动调用父类的默认构造函数

class Employee extends Person {
// Person does not have a default constructor;
// you must call super.fromJson(data).
Employee.fromJson(Map data) : super.fromJson(data) {
print('in Employee');
}
}

main() {
var emp = new Employee.fromJson({});

// Prints:
// in Person
// in Employee
if (emp is Person) {
// Type check
emp.firstName = 'Bob';
}
(emp as Person).firstName = 'Bob';
}
- // 在构造函数体执行之前,
// 通过初始列表设置实例变量。
Point.fromJson(Map<String, num> json)
: x = json['x'],
y = json['y'] {
print('In Point.fromJson(): (x,y)');
}

void main() {
var rect = Rectangle(3, 4, 20, 15);
assert(rect.left == 3);
rect.right = 12;
assert(rect.left == -8);
}

class EffectiveDoer extends Doer {
void doSomething() {
// 提供方法实现,所以这里的方法就不是抽象方法了...
}
}

泛型

<T>表示

List<String> list = ['a', 'b'];

var list = <int>[0, 1, 2];
var map = <String, dynamic>{};

限制泛型类型

class Extender extends SomeBaseClass {...}

泛型函数

import

// 使用 lib1 中的 Element。
Element element1 = Element();

// 使用 lib2 中的 Element。
lib2.Element element2 = lib2.Element();

// Import all names EXCEPT foo.
import 'package:lib2/lib2.dart' hide foo;

当需要使用的时候,使用库标识符调用 loadLibrary() 函数来加载库:
Future greet() async {
await hello.loadLibrary();
hello.printGreeting();
}
在一个库上你可以多次调用 loadLibrary() 函数。但是该库只是载入一次。

export

library

part

异步

返回Future/Stream

async-await关键字

Isolates

所有 Dart 代码都在隔离区( isolates )内运行,而不是线程。

每个隔离区都有自己的内存堆,确保每个隔离区的状态都不会被其他隔离区访问。

typedef

自定义函数类型

typedef NetworkRequestCompletion = void Function(Error error, Map<String, dynamic> json);

元数据

元数据注释以字符 @ 开头

/// Deprecated: Use [turnOn] instead.

@deprecated
void activate() {
turnOn();
}

上一篇 下一篇

猜你喜欢

热点阅读