【Flutter 1-14】Flutter手把手教程Dart語言——Dart語言引用、import、

做者 | 弗拉德
來源 | 弗拉德(公衆號:fulade_me)html

import 關鍵字能夠幫助你建立一個模塊化和可共享的代碼庫,代碼庫不只只是提供 API 並且還起到了封裝的做用:如下劃線(_)開頭的成員僅在代碼庫中可見。算法

使用庫

使用import來指定命名空間以便其它庫能夠訪問。好比你能夠導入代碼庫 dart:html來使用Dart Web中相關 API:異步

import 'dart:html';

import的惟一參數是用於指定代碼庫的URI,對於Dart內置的庫,使用 dart:xxxxxx的形式。而對於其它的庫,你可使用一個文件系統路徑或者以 package:xxxxxx 的形式。package:xxxxxx 指定的庫經過包管理器(好比 pub 工具)來提供:async

import 'package:test/test.dart';

指定庫前綴

若是你導入的兩個代碼庫有衝突的標識符,你能夠爲其中一個指定前綴。好比若是 library1library2 都有Element 類,那麼能夠這麼處理:ide

import 'package:lib1/lib1.dart';
import 'package:lib2/lib2.dart' as lib2;
// 使用 lib1 的 Element 類。
Element element1 = Element();
// 使用 lib2 的 Element 類。
lib2.Element element2 = lib2.Element();

導入庫的一部分

若是你只想使用代碼庫中的一部分,你能夠有選擇地導入代碼庫。例如:模塊化

// 只導入 lib1 中的 foo。(Import only foo).
import 'package:lib1/lib1.dart' show foo;
// 導入 lib2 中除了 foo 外的全部。
import 'package:lib2/lib2.dart' hide foo;

延遲加載庫

延遲加載(也常稱爲懶加載)容許應用在須要時再去加載代碼庫,下面是可能使用到延遲加載的場景:函數

  • 爲了減小應用的初始化時間。工具

  • 處理 A/B 測試,好比測試各類算法的不一樣實現。測試

  • 加載不多會使用到的功能,好比可選的屏幕和對話框。

使用deferred as關鍵字來標識須要延時加載的代碼庫:code

import 'package:greetings/hello.dart' deferred as hello;

當實際須要使用到庫中API時先調用loadLibrary函數加載庫:

Future greet() async {
  await hello.loadLibrary();
  hello.printGreeting();
}

在前面的代碼,使用 await 關鍵字暫停代碼執行直到庫加載完成。更多關於 async 和 await 的信息請參考異步支持。
loadLibrary 函數能夠調用屢次也不要緊,代碼庫只會被加載一次。
當你使用延遲加載的時候須要牢記如下幾點:

  • 延遲加載的代碼庫中的常量須要在代碼庫被加載的時候纔會導入,未加載時是不會導入的。
  • 導入文件的時候沒法使用延遲加載庫中的類型。若是你須要使用類型,則考慮吧接口類型轉移到另外一個庫中而後讓兩個庫都分別導入這個接口庫。
  • Dart會隱式地將loadLibrary方法導入到使用了deferred as命名空間 的類中。loadLibrary函數返回的是一個Future

公衆號

相關文章
相關標籤/搜索