dart:core

为每个 Dart 程序提供内置类型、集合和其他核心功能。

此库自动导入。

此库中的一些类,如 Stringnum,支持 Dart 的内置数据类型。其他类,如 ListMap,提供用于管理对象集合的数据结构。还有一些类代表常用的数据类型,如 URI、日期和时间、错误。

数字和布尔值

intdouble 分别为 Dart 的内置数值数据类型提供支持:整数和双精度浮点数。类型为 bool 的对象可以是 true 或 false。这些类型的变量可以从字面量构造。

int meaningOfLife = 42;
double valueOfPi  = 3.141592;
bool visible      = true;

字符串和正则表达式

String 是不可变的,表示字符序列。

String shakespeareQuote = "All the world's a stage, ...";

StringBuffer 提供了一种有效地构造字符串的方法。

var moreShakespeare = StringBuffer();
moreShakespeare.write('And all the men and women ');
moreShakespeare.write('merely players; ...');

StringStringBuffer 类实现了字符串拆分、连接和其他字符串操作功能。

bool isPalindrome(String text) => text == text.split('').reversed.join();

RegExp 实现了 Dart 正则表达式,它为在文本中匹配模式提供了一种语法。例如,以下是一个匹配包含一个或多个数字的子串的正则表达式

var numbers = RegExp(r'\d+');

Dart 正则表达式具有与 JavaScript 正则表达式相同的语法和语义。有关 JavaScript 正则表达式的规范,请参阅 ecma-international.org/ecma-262/5.1/#sec-15.10

集合

dart:core 库提供基本集合,如 ListMapSet

List 是一个有顺序的对象集合,具有长度。列表有时也称为数组。当需要通过索引访问对象时,请使用 List

var superheroes = ['Batman', 'Superman', 'Harry Potter'];

Set 是一个无序的唯一对象集合。不能通过索引(位置)有效地获取项。添加已存在于集合中的元素不会产生任何效果。

var villains = {'Joker'};
print(villains.length); // 1
villains.addAll(['Joker', 'Lex Luthor', 'Voldemort']);
print(villains.length); // 3

Map 是一个无序的键值对集合,其中每个键只能出现一次。由于映射将键关联到某个值以方便检索,因此有时也称为关联数组。当需要通过唯一标识符访问对象时,请使用 Map

var sidekicks = {'Batman': 'Robin',
                 'Superman': 'Lois Lane',
                 'Harry Potter': 'Ron and Hermione'};

除了这些类之外,dart:core 还包含 Iterable 接口,它定义了在对象集合中常见的功能。例如,可以在集合的每个元素上运行一个函数、对每个元素应用一个测试、获取一个对象以及确定元素数量。

IterableListSet 实现,并由 Map 用于其键和值。

有关其他类型的集合,请参阅 dart:collection 库。

日期和时间

使用 DateTime 来表示一个时间点,使用 Duration 来表示一个时间跨度。

您可以通过构造函数或解析正确格式的字符串来创建 DateTime 对象。

var now = DateTime.now();
var berlinWallFell = DateTime(1989, 11, 9);
var moonLanding = DateTime.parse("1969-07-20");

通过指定各个时间单位来创建 Duration 对象。

var timeRemaining = const Duration(hours: 56, minutes: 14);

除了 DateTimeDurationdart:core 还包含用于测量经过时间的 Stopwatch 类。

Uri

Uri 对象代表一个统一资源标识符,用于标识资源,例如在网页上。

var dartlang = Uri.parse('http://dartlang.org/');

错误

Error 类表示运行时发生的错误。该类的子类代表特定类型的错误。

其他文档

有关如何使用内置类型的更多信息,请参阅 内置类型,这是 Dart 语言之旅 的一部分。

还可以查阅 dart:core - 数字、集合、字符串等 了解该库中类型的更多内容。

Dart 语言规范 Dart Language Specification 提供了技术细节。

BigInt
任意大的整数值。
bool
保留字 truefalse 表示该类唯一的两个实例。
Comparable<T>
用于具有固有排序的类型界面的接口。
DateTime
一个时间点,例如 1969 年 7 月 20 日,晚上 8:18 GMT。
已弃用
注解 @Deprecated('migration') 标记一个特性为已弃用。
double
双精度浮点数。
Duration
一个时间跨度,例如 27 天,4 小时,12 分钟和 3 秒。
Enum
枚举值。
Expando<T extends Object>
Expando 允许向对象添加新属性。
Finalizer<T>
可以附加到 Dart 对象的终结器。
Function
函数值。
Future<T>
异步计算的结果。
int
整数。
Invocation
表示在对象上调用成员的表示。
Iterable<E>
一组值,或“元素”,可以按顺序访问。
Iterator<E>
从对象中获取项目的接口。
List<E>
具有长度的可索引对象集合。
Map<K, V>
键值对的集合,您可以使用其相关键检索值。
MapEntry<K, V>
表示 Map 中的一个条目的键值对。
Match
在字符串中搜索的结果。
Null
保留字 null 表示该类唯一的实例。
num
整数或浮点数。
Object
除了 null 之外,所有 Dart 对象的基类。
Pattern
基本字符串搜索的接口。
pragma
对工具的提示。
Record
记录值。
正则表达式
正则表达式模式。
正则表达式匹配
正则表达式匹配结果。
RuneIterator
迭代器,用于读取Dart字符串的整数Unicode码点。
Runes
String的整数Unicode码点。
集合<E>
一个集合,其中每个对象只能出现一次。
Sink<T>
数据的一个泛型目的地。
StackTrace
所有堆栈跟踪对象实现的接口。
Stopwatch
一个在运行时测量时间的计时器。
Stream<T>
异步数据事件的来源。
String
UTF-16码单元的序列。
StringBuffer
一个用于高效连接字符串的类。
StringSink
Symbol
由mirrors、调用和Function.apply使用的不可见名称。
Type
类型的运行时表示。
Uri
解析的URI,如URL。
UriData
访问data: URI结构的途径。
WeakReference<T extends Object>
Dart对象的弱引用。

扩展

DateTimeCopyWith on DateTime
DateTime对象添加copyWith方法。
EnumByName on Iterable<T>
通过名称访问枚举值。
EnumName on Enum
访问枚举值的名称。
FutureExtensions on Future<T>
对future的便利方法。
FutureIterable on Iterable<Future<T>>
FutureRecord2 on (Future<T1>, Future<T2>)
对future记录的并行操作。
FutureRecord3 on (Future<T1>, Future<T2>, Future<T3>)
对future记录的并行操作。
FutureRecord4 在 (Future<T1>, Future<T2>, Future<T3>, Future<T4>) 时触发
对future记录的并行操作。
FutureRecord5 在 (Future<T1>, Future<T2>, Future<T3>, Future<T4>, Future<T5>) 时触发
对future记录的并行操作。
FutureRecord6 在 (Future<T1>, Future<T2>, Future<T3>, Future<T4>, Future<T5>, Future<T6>) 时触发
对future记录的并行操作。
FutureRecord7 在 (Future<T1>, Future<T2>, Future<T3>, Future<T4>, Future<T5>, Future<T6>, Future<T7>) 时触发
对future记录的并行操作。
FutureRecord8 在 (Future<T1>, Future<T2>, Future<T3>, Future<T4>, Future<T5>, Future<T6>, Future<T7>, Future<T8>)
对future记录的并行操作。
FutureRecord9 在 (Future<T1>, Future<T2>, Future<T3>, Future<T4>, Future<T5>, Future<T6>, Future<T7>, Future<T8>, Future<T9>)
对future记录的并行操作。
IterableExtensionsIterable<T>
迭代器的操作。
NullableIterableExtensionsIterable<T?>
对具有可空元素的迭代器的操作。

常量

deprecated → const Deprecated
标记一个特性为 Deprecated 直到下一个版本。
override → const Object
在覆盖接口成员的实例成员上的注解。

函数

identical(Object? a, Object? b) bool
检查两个对象引用是否指向同一个对象。
identityHashCode(Object? object) int
对象的身份哈希码。
print(Object? object) → void
将对象打印到控制台。

类型别名

Comparator<T> = int Function(T a, T b)
通用比较函数的签名。

异常/错误

ArgumentError
当函数被传递不可接受的参数时抛出的错误。
AssertionError
当运行时系统中的 assert 语句失败时抛出的错误。
ConcurrentModificationError
在迭代期间修改集合时发生错误。
Error
程序失败时抛出的错误对象。
Exception
所有核心库异常实现的一个标记接口。
FormatException
当字符串或其他数据没有预期的格式且无法解析或处理时抛出的异常。
IndexError
当索引不在 0..indexable.length-1 范围内时使用的专用 RangeError
IntegerDivisionByZeroException
NoSuchMethodError
在无效的函数或方法调用时抛出的错误。
OutOfMemoryError
平台在内存短缺情况下可以使用的一种错误。
ParallelWaitError<V, E>
当等待多个未来时,其中一些有错误时抛出的错误。
RangeError
由于参数值超出接受范围而抛出的错误。
StackOverflowError
平台在堆栈溢出情况下可以使用的一种错误。
StateError
操作不允许对象的当前状态。
TypeError
运行时系统在发生动态类型错误时抛出的错误。
UnimplementedError
未实现的操作抛出的错误。
UnsupportedError
操作不允许对象。