Ich weiß , dass Sie das können library
, import
und sogar #import
, aber die ist richtig?
Ich habe zwei Dateien MainClass.dart
und Library.Dart
möchte einen Verweis auf Library.dart
in hinzufügen MainClass.dart
. Wie kann ich das machen?
Antworten:
Lassen Sie mich zunächst nur vorab sagen, dass Sie das Hash-Symbol vor dem Import oder der Bibliothek oder etwas anderem nicht verwenden sollten. Dies ist eine alte Syntax, die veraltet ist. Wir wollen also nicht mehr verwenden. #import('...')
Die richtige Syntax lautet:
import 'some_file.dart';
Es gibt jedoch zwei verschiedene Möglichkeiten, um auf verschiedene Dart-Quelldateien in unserer aktuellen Datei zuzugreifen. Der erste ist in import
die Datei. Wir verwenden dies beispielsweise in Ihrem Fall, wenn Sie eine andere Bibliothek in die aktuelle Datei (oder genauer die aktuelle Bibliothek) aufnehmen möchten.
Wenn sich Ihre Dateien im selben Verzeichnis oder in einem Unterverzeichnis des aktuellen befinden, werden sie normalerweise wie folgt importiert:
import 'lib/library.dart';
Wenn Sie jedoch das Layout des Pub-Pakets verwenden, können Sie auch einige spezielle Verknüpfungsreferenzen verwenden, um Dateien zu importieren (insbesondere aus anderen Paketen, die Sie importiert haben). Ich empfehle dringend, die zu lesen Dokumente auf der Pub-Site zu , da die meisten Anwendungen und Bibliotheken in diesem Sinne konzipiert sind. Es enthält auch Vorschläge zu den besten Namenskonventionen wie Dateinamen in Kleinbuchstaben sowie zur Verwendung von Unterstrichen für Leerzeichen und Verzeichnislayouts.
Die andere wichtige Sache, die Sie wissen müssen, um eine Dart-Datei in eine andere Datei zu bringen, ist, dass wir die Anweisungen part
und verwenden können part of
. Dies wurde früher aufgerufen, #source
aber geändert (mit dem Entfernen des Hash-Zeichens), um Verwirrung zu vermeiden. Die part
Direktive wird benutzt , wenn wir eine einzige Bibliothek schreiben möchten , die mehrere Dateien umfasst. Nehmen wir zum Beispiel an, Sie haben eine Awesome Library , die für eine einzelne Datei etwas größer wird. Wir werden die Hauptdatei der Bibliothek erstellen (nicht zu verwechseln mit der Hauptmethode). Diese Datei hat normalerweise den gleichen Namen wie die Bibliothek selbst.
// awesome_library.dart
library awesome_library;
import 'dart:math';
import '...';
// this injects all the content of secret_file.dart
// into this file right here almost as if it was
// here in the first place.
part 'src/secret_file.dart';
// The rest of our file here
// ...
Die part-Direktive nimmt im Grunde alles aus unserer src / secret_file.dart und fügt es in diesen Teil der Datei ein. Auf diese Weise können wir unsere riesige Awesome Library in mehrere kleinere Dateien aufteilen , die einfacher zu warten sind. Obwohl dies nicht ausdrücklich erforderlich ist, ist es hilfreich, die part of
Direktive in unserer Datei secret_file.dart zu verwenden, damit der Editor erkennt, dass sie "Teil" der Bibliothek ist.
// secret_file.dart
part of awesome_library;
// ... Rest of our secret_file code below.
Beachten Sie, dass bei Verwendung einer solchen Teiledatei die Teile (dh alles, was nicht die Hauptdatei der Bibliothek ist) keine Bibliotheksdeklarationen selbst importieren oder verwenden können. Sie importieren alles, was in die Hauptdatei importiert wird, können jedoch keine zusätzlichen Importe hinzufügen.
Weitere Informationen zur Bibliothek finden Sie unter diesem Link.
Importieren Ihrer selbst erstellten Bibliotheken: Sie importieren den filename.dart
und nicht den Namen Ihrer Bibliothek. Wenn der Name Ihrer Bibliothek also lautet: myLib
und er in der Datei gespeichert ist, müssen someDartFile.dart
Sie :
import 'someDartFile.dart';
Wenn Sie unter Windows eine Bibliothek unter: K: \ SomeDir \ someFile.dart haben, müssen Sie Folgendes schreiben:
import '/K:/SomeDir/someFile.dart';
Beispiel:
import 'LibraryFile.dart'; //importing myLib
void main(){
//a class from myLib in the LibraryFile.dart file
var some = new SomeClassFromMyLibrary();
}
myLib in LibraryFile.dart:
library myLibrary;
import 'dart:math';
class SomeClassFromMyLibrary{
String _str = "this is some private String only to myLibrary";
String pubStr = "created instances of this class can access";
}
Hier ein vollständiges Beispiel.
//TestLib.dart
import 'LibFile.dart'; //SomeLibrary
void main() {
print("Hello, World!");
LibFile l = new LibFile();
print(l.publicString);//public
print(l.getPrivateString);//private
print(l.getMagicNumber); //42
}
//LibFile.dart
library SomeLibrary;
part 'LibFile2.dart';
class LibFile {
String _privateString = "private";
String publicString = "public";
String get getPrivateString => _privateString;
int get getMagicNumber => new LibFile2().number;
}
//LibFile2.dart
part of SomeLibrary;
class LibFile2 {
int number = 42;
}
Ich antworte zwar sehr spät, aber die Antwort kann neuen Entwicklern helfen.
Verwenden Sie immer die Datei pubspec.yaml in Ihrem Dart-Paket (Anwendung / Bibliothek).
Sobald Sie den Befehl pub get ausführen, wird Ihre lokale Bibliothek zur Abhängigkeitsliste in der .packages-Datei hinzugefügt.
Bedenken Sie, ich habe folgende Projektstruktur.
Um auf den Inhalt von greeting.dart in meiner main.dart-Datei zu verweisen, sollte ich die Bibliothek wie folgt hinzufügen
import 'package:my_project_name/greeting.dart'
Nach dem Import können wir den Inhalt der Datei greeting.dart in unserer Datei main.dart verwenden. Hinweis: Wir haben den tatsächlichen Pfad nicht verwendet, da das Verzeichnis 'lib' fehlt.
Stellen Sie zunächst sicher, dass der Name, den Sie erwähnt haben, pubspec.yaml
und die Datei, die Sie importieren möchten, genau denselben Namen haben
Beispiel:
pubspec.yaml
name: flutter_wordpress_app
description: flutter wordpress app
...
....
// dirOne/dirTwo/greeting.dart
class FavArticleBloc {
// Your code goes here
}
import 'package:flutter_wordpress_app/dirOne/dirTwo/greeting.dart'
void main(){
var some = new FavArticleBloc();
}
Aber in der müssen main.dart
Sie nicht angeben, machen Sie
import 'package:flutter_wordpress_app
einfach wie unten
import 'dirOne/dirTwo/greeting.dart