泛型
對於 List 或 Set 只需要在聲明語句前加 前綴, 對於 Map 只需要在聲明語句前加 <keyType, valueType> 前綴
var names = <String>['Seth', 'Kathy', 'Lars'];//list類型
var uniqueNames = <String>{'Seth', 'Kathy', 'Lars'};//set類型
var pages = <String, String>{//map類型
'index.html': 'Homepage',
'robots.txt': 'Hints for web robots',
'humans.txt': 'We are people, not machines'
};
庫和可見性
以下劃線 (_) 開頭的標識符僅在庫內可見。如果導入兩個存在衝突標識符的庫, 則可以爲這兩個庫或者其中一個指定前綴。 例如,如果 library1 和 library2 都有一個 Element 類, 那麼可以通過下面的方式處理:
import 'package:lib1/lib1.dart';
import 'package:lib2/lib2.dart' as lib2;
// 使用 lib1 中的 Element。
Element element1 = Element();
// 使用 lib2 中的 Element。
lib2.Element element2 = lib2.Element();
如果只使用庫的一部分功能,可以選擇需要導入的內容
// Import only foo.
import 'package:lib1/lib1.dart' show foo;
// Import all names EXCEPT foo.
import 'package:lib2/lib2.dart' hide foo;
延遲加載庫
要延遲加載一個庫,需要先使用 deferred as 來導入:
import 'package:greetings/hello.dart' deferred as hello;
當需要使用的時候,使用庫標識符調用 loadLibrary() 函數來加載庫:
Future greet() async {
await hello.loadLibrary();
hello.printGreeting();
}
Dart 隱含的把 loadLibrary() 函數導入到使用 deferred as 的命名空間 中。 loadLibrary() 方法返回一個 Future。