Sé que puedes usar library
, import
e incluso #import
, pero ¿cuál es la correcta?
Tengo dos archivos MainClass.dart
y Library.Dart
quiero agregar una referencia Library.dart
en MainClass.dart
. ¿Cómo puedo hacer eso?
Respuestas:
En primer lugar, permítanme comenzar diciendo que por favor no utilicen el símbolo de almohadilla antes de la importación o biblioteca o cualquier otra cosa. Esta es una sintaxis antigua que está en desuso. Entonces 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 fuente de dart dentro de nuestro archivo actual. El primero es import
el archivo. Usamos esto como en su caso cuando desea traer una biblioteca diferente al archivo actual (o más exactamente a la biblioteca actual).
Por lo general, si sus archivos están en el mismo directorio, o en un subdirectorio del actual, los importaríamos así:
import 'lib/library.dart';
Sin embargo, si está usando el diseño del paquete pub, también puede usar algunas referencias de atajos especiales para importar archivos (particularmente de otros paquetes que haya importado). Recomiendo encarecidamente 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 los nombres de archivo en minúsculas y el uso de subrayado para espacios y diseños de directorio.
La otra cosa importante que debe saber acerca de traer un archivo dart a otro archivo es que podemos usar las directivas part
y part of
. Esto solía llamarse, #source
pero se cambió (con la eliminación del signo de almohadilla) para reducir la confusión. La part
directiva se usa cuando queremos escribir una sola biblioteca que abarque varios archivos. Digamos, por ejemplo, que tiene una biblioteca impresionante , que está empezando a volverse un poco grande para un solo archivo. Crearemos el archivo principal de la biblioteca (no confundir con el método principal). Este archivo normalmente 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 part 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 Awesome en varios archivos más pequeños que son más fáciles de mantener. Si bien 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 cuando se usa un archivo de pieza como este, la pieza (es) (es decir, todo lo que no es el archivo principal de la biblioteca) no puede importar ni usar declaraciones de biblioteca por sí mismas. Importan lo que se importa al archivo principal, pero no pueden agregar importaciones adicionales.
Para obtener más información sobre la biblioteca, consulte este enlace.
Importación de sus propias bibliotecas creadas: estará importando filename.dart
el nombre de su biblioteca y no el. 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;
}
Aunque estoy respondiendo muy tarde, pero la respuesta puede ayudar a un nuevo desarrollador.
Utilice siempre el archivo pubspec.yaml en su paquete de dart (aplicación / biblioteca).
una vez que ejecute el comando pub get, agregará su biblioteca local en la lista de dependencias en el archivo .packages.
Considere que tengo la siguiente estructura de proyecto.
Para consultar el contenido de greeting.dart en mi archivo main.dart, debo agregar la biblioteca como se muestra a continuación
import 'package:my_project_name/greeting.dart'
Una vez importado, podemos usar el contenido del archivo greeting.dart en nuestro archivo main.dart. Nota: no hemos utilizado la ruta real, ya que puede ver que falta el directorio 'lib'.
Primero asegúrese de que ese sea el nombre que ha mencionado pubspec.yaml
y el archivo que desea importar comparte exactamente el mismo nombre
ejemplo:
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();
}
Pero en el main.dart
no necesita especificar,
import 'package:flutter_wordpress_app
simplemente haga lo siguiente
import 'dirOne/dirTwo/greeting.dart