dart
Библиотеки
Поиск…
замечания
Директивы import и library могут помочь вам создать модульную и общую базу кода. Каждое приложение Dart представляет собой library , даже если она не использует директиву библиотеки. Библиотеки могут быть распределены с использованием пакетов. Информацию о пабе, менеджере пакетов, включенном в SDK, см. В разделе Паб-пакет и Asset Manager .
Использование библиотек
Используйте import чтобы указать, как пространство имен из одной библиотеки используется в области другой библиотеки.
import 'dart:html';
Единственным обязательным аргументом для import является URI, определяющий библиотеку. Для встроенных библиотек URI имеет специальную схему dart: Для других библиотек вы можете использовать путь к файловой системе или схему package: package: схема указывает библиотеки, предоставляемые диспетчером пакетов, такие как инструмент pub. Например:
import 'dart:io';
import 'package:mylib/mylib.dart';
import 'package:utils/utils.dart';
Библиотеки и видимость
В отличие от Java, Dart не имеет public , protected и закрытых ключевых слов. Если идентификатор начинается с символа подчеркивания _ , он является закрытым для его библиотеки.
Если вы, например, имеете класс A в отдельном файле библиотеки (например, other.dart ), например:
library other;
class A {
int _private = 0;
testA() {
print('int value: $_private'); // 0
_private = 5;
print('int value: $_private'); // 5
}
}
а затем импортировать его в основное приложение, например:
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
}
}
Вы получаете ожидаемый результат:
String value: Hello
int value: 0
int value: 5
String value: Hello
Указание префикса библиотеки
Если вы импортируете две библиотеки с конфликтующими идентификаторами, вы можете указать префикс для одной или обеих библиотек. Например, если у библиотеки 1 и библиотеки 2 есть класс Element, тогда у вас может быть такой код:
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.
Импортирование только части библиотеки
Если вы хотите использовать только часть библиотеки, вы можете выборочно импортировать библиотеку. Например:
// 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;
Ленько загружая библиотеку
Отложенная загрузка (также называемая ленивой загрузкой) позволяет приложению загружать библиотеку по требованию, если и когда это необходимо. Чтобы лениво загрузить библиотеку, вы должны сначала импортировать ее, используя отложенную.
import 'package:deferred/hello.dart' deferred as hello;
Когда вам нужна библиотека, вызовите loadLibrary (), используя идентификатор библиотеки.
greet() async {
await hello.loadLibrary();
hello.printGreeting();
}
В предыдущем коде ключевое слово await приостанавливает выполнение до загрузки библиотеки. Для получения дополнительной информации об async и await , см. Больше примеров здесь поддержки асинхронной поддержки или посетите часть поддержки асинхронизации языкового тура.