Programmation Dart - Bibliothèques

Une bibliothèque dans un langage de programmation représente une collection de routines (ensemble d'instructions de programmation). Dart possède un ensemble de bibliothèques intégrées qui sont utiles pour stocker les routines fréquemment utilisées. Une bibliothèque Dart comprend un ensemble de classes, constantes, fonctions, typedefs, propriétés et exceptions.

Importer une bibliothèque

L'importation rend les composants d'une bibliothèque disponibles pour le code de l'appelant. Le mot-clé import est utilisé pour réaliser la même chose. Un fichier de fléchettes peut avoir plusieurs instructions d'importation.

Les URI de bibliothèque Dart intégrés utilisent le schéma dart: pour faire référence à une bibliothèque. D'autres bibliothèques peuvent utiliser un chemin d'accès au système de fichiers ou le package: schéma pour spécifier son URI. Les bibliothèques fournies par un gestionnaire de packages tel que l'outil pub utilisent le package: schéma .

La syntaxe pour importer une bibliothèque dans Dart est donnée ci-dessous -

import 'URI'

Considérez l'extrait de code suivant -

import 'dart:io' 
import 'package:lib1/libfile.dart'

Si vous souhaitez n'utiliser qu'une partie d'une bibliothèque, vous pouvez importer la bibliothèque de manière sélective. La syntaxe pour le même est donnée ci-dessous -

import 'package: lib1/lib1.dart' show foo, bar;  
// Import only foo and bar. 

import 'package: mylib/mylib.dart' hide foo;  
// Import all names except foo

Certaines bibliothèques couramment utilisées sont données ci-dessous -

Sr.Non Bibliothèque et description
1

dart:io

Prise en charge des fichiers, socket, HTTP et autres E / S pour les applications serveur. Cette bibliothèque ne fonctionne pas dans les applications basées sur un navigateur. Cette bibliothèque est importée par défaut.

2

dart:core

Types intégrés, collections et autres fonctionnalités de base pour chaque programme Dart. Cette bibliothèque est automatiquement importée.

3

dart: math

Constantes et fonctions mathématiques, plus un générateur de nombres aléatoires.

4

dart: convert

Encodeurs et décodeurs pour la conversion entre différentes représentations de données, y compris JSON et UTF-8.

5

dart: typed_data

Listes qui gèrent efficacement des données de taille fixe (par exemple, des entiers de 8 octets non signés).

Exemple: importation et utilisation d'une bibliothèque

L'exemple suivant importe la bibliothèque intégrée dart: math. L'extrait appelle lesqrt() fonction de la mathbibliothèque. Cette fonction renvoie la racine carrée d'un nombre qui lui est passé.

import 'dart:math'; 
void main() { 
   print("Square root of 36 is: ${sqrt(36)}"); 
}

Output

Square root of 36 is: 6.0

Encapsulation dans les bibliothèques

Les scripts Dart peuvent préfixer les identificateurs avec un trait de soulignement (_) pour marquer ses composants comme privés. En termes simples, les bibliothèques Dart peuvent restreindre l'accès à son contenu par des scripts externes. Ceci est appeléencapsulation. La syntaxe pour le même est donnée ci-dessous -

Syntaxe

_identifier

Exemple

Dans un premier temps, définissez une bibliothèque avec une fonction privée.

library loggerlib;                            
void _log(msg) {
   print("Log method called in loggerlib msg:$msg");      
}

Ensuite, importez la bibliothèque

import 'test.dart' as web; 
void main() { 
   web._log("hello from webloggerlib"); 
}

Le code ci-dessus entraînera une erreur.

Unhandled exception: 
No top-level method 'web._log' declared.  
NoSuchMethodError: method not found: 'web._log' 
Receiver: top-level 
Arguments: [...] 
#0 NoSuchMethodError._throwNew (dart:core-patch/errors_patch.dart:184) 
#1 main (file:///C:/Users/Administrator/WebstormProjects/untitled/Assertion.dart:6:3) 
#2 _startIsolate.<anonymous closure> (dart:isolate-patch/isolate_patch.dart:261) 
#3 _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:148)

Création de bibliothèques personnalisées

Dart vous permet également d'utiliser votre propre code comme bibliothèque. La création d'une bibliothèque personnalisée implique les étapes suivantes -

Step 1: Declaring a Library

Pour déclarer explicitement une bibliothèque, utilisez le library statement. La syntaxe pour déclarer une bibliothèque est la suivante -

library library_name  
// library contents go here

Step 2: Associating a Library

Vous pouvez associer une bibliothèque de deux manières -

  • Dans le même répertoire
import 'library_name'
  • Depuis un autre répertoire
import 'dir/library_name'

Exemple: bibliothèque personnalisée

Tout d'abord, définissons une bibliothèque personnalisée, calculator.dart.

library calculator_lib;  
import 'dart:math'; 

//import statement after the libaray statement  
int add(int firstNumber,int secondNumber){ 
   print("inside add method of Calculator Library ") ; 
   return firstNumber+secondNumber; 
}  
int modulus(int firstNumber,int secondNumber){ 
   print("inside modulus method of Calculator Library ") ; 
   return firstNumber%secondNumber; 
}  
int random(int no){ 
   return new Random().nextInt(no); 
}

Ensuite, nous importerons la bibliothèque -

import 'calculator.dart';  
void main() {
   var num1 = 10; 
   var num2 = 20; 
   var sum = add(num1,num2); 
   var mod = modulus(num1,num2); 
   var r = random(10);  
   
   print("$num1 + $num2 = $sum"); 
   print("$num1 % $num2= $mod"); 
   print("random no $r"); 
}

Le programme doit produire les éléments suivants output -

inside add method of Calculator Library  
inside modulus method of Calculator Library  
10 + 20 = 30 
10 % 20= 10 
random no 0

Préfixe de bibliothèque

Si vous importez deux bibliothèques avec des identificateurs en conflit, vous pouvez spécifier un préfixe pour une ou les deux bibliothèques. Utilisez le'as'mot-clé pour spécifier le préfixe. La syntaxe pour le même est donnée ci-dessous -

Syntaxe

import 'library_uri' as prefix

Exemple

Tout d'abord, définissons une bibliothèque: loggerlib.dart.

library loggerlib;  
void log(msg){ 
   print("Log method called in loggerlib msg:$msg");
}

Ensuite, nous définirons une autre bibliothèque: webloggerlib.dart.

library webloggerlib; 
void log(msg){ 
   print("Log method called in webloggerlib msg:$msg"); 
}

Enfin, nous importerons la bibliothèque avec un préfixe.

import 'loggerlib.dart'; 
import 'webloggerlib.dart' as web;  

// prefix avoids function name clashes 
void main(){ 
   log("hello from loggerlib"); 
   web.log("hello from webloggerlib"); 
}

Il produira ce qui suit output -

Log method called in loggerlib msg:hello from loggerlib 
Log method called in webloggerlib msg:hello from webloggerlib