Ricerca…


Osservazioni

Le direttive di import e library possono aiutarti a creare una base di codice modulare e condivisibile. Ogni app Dart è una library , anche se non usa una direttiva di libreria. Le librerie possono essere distribuite usando i pacchetti. Vedi Pacchetto pub e Gestione risorse per informazioni su pub, un gestore di pacchetti incluso nell'SDK.

Utilizzando le librerie

Usa import per specificare come viene utilizzato uno spazio dei nomi da una libreria nell'ambito di un'altra libreria.

import 'dart:html';

L'unico argomento obbligatorio da import è un URI che specifica la libreria. Per le librerie integrate, l'URI ha lo speciale dart: schema. Per altre librerie, è possibile utilizzare un percorso del file system o il package: scheme. Il package: schema specifica le librerie fornite da un gestore di pacchetti come lo strumento pub. Per esempio:

import 'dart:io';
import 'package:mylib/mylib.dart';
import 'package:utils/utils.dart';

Librerie e visibilità

A differenza di Java, Dart non ha le parole chiave public , protected e private. Se un identificatore inizia con un carattere di sottolineatura _ , è privato della sua libreria.

Se per esempio hai classe A in un file di libreria separato (ad esempio, other.dart ), ad esempio:

library other;

class A {
  int _private = 0;

  testA() {
    print('int value: $_private');  // 0
    _private = 5;
    print('int value: $_private'); // 5
  }
}

e quindi importalo nell'app principale, ad esempio:

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
  }
}

Ottieni l'output atteso:

String value: Hello
int value: 0
int value: 5
String value: Hello

Specifica di un prefisso di libreria

Se importi due librerie con identificatori in conflitto, puoi specificare un prefisso per una o entrambe le librerie. Ad esempio, se library1 e library2 hanno entrambi una classe Element, allora potresti avere un codice come questo:

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.

Importare solo parte di una libreria

Se si desidera utilizzare solo parte di una libreria, è possibile importare selettivamente la libreria. Per esempio:

// 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;

Caricamento lento di una libreria

Il caricamento differito (chiamato anche caricamento lazy) consente a un'applicazione di caricare una libreria su richiesta, se e quando è necessaria. Per caricare pigramente una libreria, devi prima importarla usando differita come.

import 'package:deferred/hello.dart' deferred as hello;

Quando hai bisogno della libreria, richiama loadLibrary () usando l'identificatore della libreria.

greet() async {
  await hello.loadLibrary();
  hello.printGreeting();
}

Nel codice precedente, la parola chiave await sospende l'esecuzione fino a quando la libreria non viene caricata. Per ulteriori informazioni su async e await , vedere altri esempi qui supporto asincronia o visitare la parte di supporto asincronia del tour linguistico.



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow