09 Dart庫和可見性

2021-09-29 08:33:32 字數 1699 閱讀 7525

import和library指令可以幫助您建立模組化和可共享的**庫。庫不僅提供api,而且包含隱私部分:以下劃線(_)開頭的識別符號僅在庫中可見。每個dart應用程式都是乙個庫,即使它不使用庫指令。

可以使用包來分發庫。有關pub package和asset manager的資訊,請參見[pub package和asset manager], pub是sdk中包含的包管理器。

使用import來指定如何在另乙個庫的範圍中使用來自乙個庫的命名空間。

例如,dart web應用程式通常使用dart:html庫,它們可以這樣匯入:

import 'dart:html';
匯入乙個庫僅僅需要提供庫的uri。對於內建庫,uri具有特定的形式(dart:scheme)。對於其他庫,可以使用檔案路徑或者包:scheme的形式。包:scheme形式指定包管理器(如pub工具)提供的庫。例如:

import 'package:test/test.dart';
注意:uri表示統一資源識別符號。url(統一資源定位器)是一種常見的uri。

如果您匯入兩個具有衝突識別符號的庫,那麼您可以為乙個或兩個庫指定乙個字首。例如,如果library1和library2都有乙個element類,那麼你可以用以下的方法:

import 'package:lib1/lib1.dart';

import 'package:lib2/lib2.dart' as lib2;

// uses element from lib1.

element element1 = element();

// uses element from lib2.

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
在前面的**中,wait關鍵字暫停執行,直到載入庫。有關async和waiting的更多資訊,請參見[非同步支援]。 您可以在庫上多次呼叫loadlibrary(),沒有問題。該庫只載入一次。 在使用延遲載入時,請記住以下幾點:

dart vm差異:由於問題#33118,dart vm甚至在呼叫loadlibrary()之前就允許訪問遞延庫的成員。我們希望這個bug能夠很快得到修復,所以不要依賴於當前的vm行為。

有關如何實現庫包的建議,請參閱[建立庫包],包括:

定位和可見性

定位 position relative 如果對元素本身進行相對單位,那麼元素會偏離原來的位置,但是原來的位置還存在文件流中。position absolute 如果對意思進行相對於某個元素的絕對定位,那麼元素從文件流分離出來,原來位置不存在了。可見性 visibility visible 元素可見...

Mutex和記憶體可見性

ieee 1003.1 2008定義了xbd 4.11記憶體同步中的記憶體可見性規則。特別地,posix實現保證 pthread join 同步 任何變數由某執行緒在結束之前修改,那 join 它的另一線程 在pthread join 完成後是可見的。mutex操作 pthread lock pth...

設定溢位屬性和可見性屬性

overflow 指明在元素內容超出元素邊界時,超出部分是被截掉,還是用滾動條顯示。可選的值是 visible 顯示超出該元素的內容 hidden 隱藏 scroll 總是顯示滾動條 auto 讓瀏覽器決定是否顯示滾動條 或者inherit 使用父物件的設定 clip 指定專案的裁剪框,只顯示框內的...