tutorial - ¿Cómo hacer referencia a otro archivo en Dart?
dart vs javascript (2)
En primer lugar, permítanme comenzar con esto diciendo que no utilice el símbolo de hash antes de importar o la biblioteca o cualquier otra cosa. Esta es una sintaxis antigua que se está depreciando. Así que ya no queremos usar #import(''...'')
La sintaxis correcta es:
import ''some_file.dart'';
Dicho esto, hay dos cosas diferentes que podemos hacer para acceder a diferentes archivos de origen de dardos dentro de nuestro archivo actual. Lo primero es import
el archivo. Usamos esto como en su caso cuando quiere traer una biblioteca diferente al archivo actual (o la biblioteca actual con mayor precisión).
Generalmente, si sus archivos están en el mismo directorio, o en un subdirectorio del actual, los importaríamos de la siguiente manera:
import ''lib/library.dart'';
Sin embargo, si está utilizando el diseño de paquete de pub, también puede usar algunas referencias de atajos especiales para importar archivos (especialmente de otros paquetes que haya importado). Recomiendo leer los documentos en el sitio del pub , ya que la mayoría de las aplicaciones y bibliotecas están diseñadas con esto en mente. También tiene sugerencias sobre las mejores convenciones de nomenclatura, como nombres de archivos en minúsculas, y el uso de guiones bajos para espacios y diseños de directorios.
La otra cosa importante que se debe saber acerca de traer un archivo de dardos a otro archivo, es que podemos usar la part
y part of
directivas. Esto solía llamarse #source
pero se cambió (con la eliminación del signo de hash) para ayudar con cierta confusión. La directiva de part
se utiliza cuando queremos escribir una sola biblioteca que abarque varios archivos. Digamos, por ejemplo, que tiene una Biblioteca impresionante , que está empezando a ser un poco grande para un solo archivo. Crearemos el archivo principal de la biblioteca (no debe confundirse con el método principal). Este archivo usualmente tendrá el mismo nombre que la propia biblioteca.
// 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
// ...
La directiva de parte básicamente toma todo de nuestro src / secret_file.dart y lo inserta en esa parte del archivo. Esto nos permite dividir nuestra enorme Biblioteca impresionante en varios archivos más pequeños que son más fáciles de mantener. Aunque no se requiere específicamente, es útil usar la part of
directiva en nuestro secret_file.dart para ayudar al editor a saber que es "parte de" la biblioteca.
// secret_file.dart
part of awesome_library;
// ... Rest of our secret_file code below.
Tenga en cuenta que al usar un archivo de pieza como este, la (s) parte (s) (que es todo lo que no es el archivo principal de la biblioteca) no pueden importar o usar las declaraciones de la biblioteca en sí mismas. Importan lo que se importa al archivo principal, pero no pueden agregar importaciones adicionales.
Esto puede sonar como una pregunta estúpida, pero honestamente no tengo idea, sé que puedes usar la library
, import
e incluso #import
, pero ¿cuál es la correcta?
Tengo dos archivos, MainClass.dart
y MainClass.dart
, y quiero agregar una referencia a MainClass.dart
en MainClass.dart
. ¿Cómo puedo hacer eso?
Importación de sus propias bibliotecas creadas: importará el filename.dart
y no el nombre de su biblioteca. Entonces, si el nombre de su biblioteca es: myLib
y está guardado en el archivo: someDartFile.dart
tendrá que
import ''someDartFile.dart'';
Si tiene en Windows una biblioteca en: K: / SomeDir / someFile.dart, deberá escribir:
import ''/K:/SomeDir/someFile.dart'';
ejemplo:
import ''LibraryFile.dart''; //importing myLib
void main(){
//a class from myLib in the LibraryFile.dart file
var some = new SomeClassFromMyLibrary();
}
myLib en 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";
}
Aquí un ejemplo completo.
//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;
}