web-dev-qa-db-fra.com

Comment référencer un autre fichier dans Dart?

Cela peut sembler une question stupide mais je n'ai honnêtement aucune idée, je sais que vous pouvez utiliser les library, import et même #import, mais lequel est correct?

J'ai deux fichiers, MainClass.Dart et Library.Dart, et je veux ajouter une référence à Library.Dart dans MainClass.Dart. Comment puis je faire ça?

51
Steoates

Tout d'abord, permettez-moi de préfacer cela en disant s'il vous plaît ne pas utiliser le symbole de hachage avant l'importation ou la bibliothèque ou autre chose. Il s'agit d'une ancienne syntaxe qui est dépréciée. Nous ne voulons donc plus utiliser #import('...') La syntaxe correcte est:

import 'some_file.Dart';

Cela dit, nous pouvons faire deux choses différentes en accédant à différents fichiers source Dart dans notre fichier actuel. La première consiste à import le fichier. Nous l'utilisons comme dans votre cas lorsque vous souhaitez importer une bibliothèque différente dans le fichier actuel (ou plus précisément la bibliothèque actuelle).

Habituellement, si vos fichiers se trouvent dans le même répertoire, ou dans un sous-répertoire du répertoire actuel, nous les importons comme ceci:

import 'lib/library.Dart';

Cependant, si vous utilisez la disposition du package pub, vous pouvez également utiliser des références de raccourci spéciales pour importer des fichiers (en particulier à partir d'autres packages que vous avez importés). Je suggère fortement de lire les documents sur le site du pub , car la plupart des applications et des bibliothèques sont conçues dans cet esprit. Il contient également des suggestions sur les meilleures conventions de dénomination telles que les noms de fichiers en minuscules et l'utilisation du trait de soulignement pour les espaces et les dispositions de répertoire.

L'autre chose importante à savoir sur l'introduction d'un fichier Dart dans un autre fichier, c'est que nous pouvons utiliser les part et part of directives. Auparavant, cela s'appelait #source mais a été modifié (avec la suppression du signe de hachage) pour éviter toute confusion. La directive part est utilisée lorsque nous voulons écrire une seule bibliothèque qui couvre plusieurs fichiers. Disons par exemple que vous avez une bibliothèque impressionnante , qui commence à devenir un peu volumineuse pour un seul fichier. Nous allons créer le fichier principal de la bibliothèque (à ne pas confondre avec la méthode principale). Ce fichier aura généralement le même nom que la bibliothèque elle-même.

// 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 directive part prend essentiellement tout de notre src/secret_file.Dart et l'insère dans cette partie du fichier. Cela nous permet de diviser notre énorme bibliothèque Awesome Library en plusieurs fichiers plus petits qui sont plus faciles à maintenir. Bien que cela ne soit pas spécifiquement requis, il est utile d'utiliser le part of directive dans notre secret_file.Dart pour aider l'éditeur à savoir qu'il fait "partie" de la bibliothèque.

// secret_file.Dart
part of awesome_library;

// ... Rest of our secret_file code below.

Notez que lorsque vous utilisez un fichier pièce comme celui-ci, la ou les pièces (c'est-à-dire tout ce qui n'est pas le fichier principal de la bibliothèque) ne peut pas importer ou utiliser les déclarations de bibliothèque elles-mêmes. Ils importent tout ce qui est importé dans le fichier principal, mais ils ne peuvent ajouter aucune importation supplémentaire.

Pour plus d'informations sur la bibliothèque, consultez ce lien.

75
Matt B

Importation de vos propres bibliothèques créées: vous importerez le filename.Dart et non le nom de votre bibliothèque. Donc, si le nom de votre bibliothèque est: myLib et il est enregistré dans le fichier: someDartFile.Dart tu vas devoir

import 'someDartFile.Dart';

Si vous avez sous Windows une bibliothèque à: K:\SomeDir\someFile.Dart, vous devrez écrire:

import '/K:/SomeDir/someFile.Dart';

exemple:

import 'LibraryFile.Dart'; //importing myLib

void main(){ 
  //a class from myLib in the LibraryFile.Dart file
  var some = new SomeClassFromMyLibrary(); 
}

myLib dans 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";
}

Voici un exemple complet.

//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;
}
13
Gero

Bien que je réponde très tard, mais la réponse peut aider un nouveau développeur.

Utilisez toujours le fichier pubspec.yaml dans votre package Dart (application/bibliothèque).

une fois que vous exécutez la commande pub get, elle ajoutera votre bibliothèque locale dans la liste des dépendances du fichier .packages.

Considérez que j'ai la structure de projet suivante.

enter image description here

Pour faire référence au contenu de greeting.Dart dans mon fichier main.Dart, je dois ajouter la bibliothèque comme ci-dessous

import 'package:my_project_name/greeting.Dart'

Une fois importé, nous pouvons utiliser le contenu du fichier greeting.Dart dans notre fichier main.Dart. Remarque: nous n'avons pas utilisé le chemin réel car vous pouvez voir que le répertoire 'lib' est manquant.

2
vashishth