dart
Biblioteki
Szukaj…
Uwagi
Dyrektywy dotyczące import i library mogą pomóc w stworzeniu modułowej i współdzielonej bazy kodu. Każda aplikacja Dart jest library , nawet jeśli nie korzysta z dyrektywy bibliotecznej. Biblioteki można dystrybuować za pomocą pakietów. Aby uzyskać informacje o pubie, menedżerze pakietów zawartym w zestawie SDK, zobacz Pub Package and Asset Manager .
Korzystanie z bibliotek
Użyj import aby określić sposób użycia przestrzeni nazw z jednej biblioteki w zakresie innej biblioteki.
import 'dart:html';
Jedynym wymaganym argumentem do import jest identyfikator URI określający bibliotekę. W przypadku bibliotek wbudowanych identyfikator URI ma specjalny schemat dart: :. W przypadku innych bibliotek można użyć ścieżki systemu plików lub schematu package: :. package: schemat określa biblioteki dostarczone przez menedżera pakietów, takiego jak narzędzie pub. Na przykład:
import 'dart:io';
import 'package:mylib/mylib.dart';
import 'package:utils/utils.dart';
Biblioteki i widoczność
W przeciwieństwie do Javy, Dart nie ma słów kluczowych public , protected i prywatnych. Jeśli identyfikator zaczyna się od znaku podkreślenia _ , jest prywatny w swojej bibliotece.
Jeśli na przykład masz klasę A w osobnym pliku biblioteki (np. other.dart ), takim jak:
library other;
class A {
int _private = 0;
testA() {
print('int value: $_private'); // 0
_private = 5;
print('int value: $_private'); // 5
}
}
a następnie zaimportuj go do głównej aplikacji, takiej jak:
import 'other.dart';
void main() {
var b = new B();
b.testB();
}
class B extends A {
String _private;
testB() {
_private = 'Hello';
print('String value: $_private'); // Hello
testA();
print('String value: $_private'); // Hello
}
}
Otrzymujesz oczekiwany wynik:
String value: Hello
int value: 0
int value: 5
String value: Hello
Określanie prefiksu biblioteki
Jeśli importujesz dwie biblioteki, które mają sprzeczne identyfikatory, możesz określić prefiks dla jednej lub obu bibliotek. Na przykład, jeśli zarówno biblioteka1, jak i biblioteka2 mają klasę Element, możesz mieć taki kod:
import 'package:lib1/lib1.dart';
import 'package:lib2/lib2.dart' as lib2;
// ...
var element1 = new Element(); // Uses Element from lib1.
var element2 =
new lib2.Element(); // Uses Element from lib2.
Importowanie tylko części biblioteki
Jeśli chcesz użyć tylko części biblioteki, możesz selektywnie zaimportować bibliotekę. Na przykład:
// Import only foo and bar.
import 'package:lib1/lib1.dart' show foo, bar;
// Import all names EXCEPT foo.
import 'package:lib2/lib2.dart' hide foo;
Lazily ładuje bibliotekę
Odroczone ładowanie (zwane także ładowaniem opóźnionym) umożliwia aplikacji ładowanie biblioteki na żądanie, jeśli i kiedy jest to potrzebne. Aby leniwie załadować bibliotekę, musisz ją najpierw zaimportować, używając opcji odroczonej jako.
import 'package:deferred/hello.dart' deferred as hello;
Gdy potrzebujesz biblioteki, wywołaj loadLibrary () przy użyciu identyfikatora biblioteki.
greet() async {
await hello.loadLibrary();
hello.printGreeting();
}
W poprzednim kodzie słowo kluczowe await wstrzymuje wykonywanie do momentu załadowania biblioteki. Aby uzyskać więcej informacji na temat async i await , zobacz więcej przykładów tutaj asynchroniczna obsługa lub odwiedź część wsparcia asynchronicznego przewodnika po języku.