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.



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow