Поиск…


замечания

Директивы 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 , см. Больше примеров здесь поддержки асинхронной поддержки или посетите часть поддержки асинхронизации языкового тура.



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow