Dart-Programmierung - Bibliotheken

Eine Bibliothek in einer Programmiersprache repräsentiert eine Sammlung von Routinen (Satz von Programmieranweisungen). Dart verfügt über eine Reihe integrierter Bibliotheken, mit denen häufig verwendete Routinen gespeichert werden können. Eine Dart-Bibliothek besteht aus einer Reihe von Klassen, Konstanten, Funktionen, Typedefs, Eigenschaften und Ausnahmen.

Bibliothek importieren

Durch den Import werden die Komponenten in einer Bibliothek für den Aufrufercode verfügbar. Das Schlüsselwort import wird verwendet, um dasselbe zu erreichen. Eine Dartdatei kann mehrere Importanweisungen enthalten.

Eingebaute Dart-Bibliotheks-URIs verwenden das dart: -Schema, um auf eine Bibliothek zu verweisen. Andere Bibliotheken können einen Dateisystempfad oder das Paket: Schema verwenden, um ihren URI anzugeben. Bibliotheken, die von einem Paketmanager wie dem Pub-Tool bereitgestellt werden, verwenden das Paket: Schema .

Die Syntax zum Importieren einer Bibliothek in Dart ist unten angegeben -

import 'URI'

Betrachten Sie das folgende Code-Snippet -

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

Wenn Sie nur einen Teil einer Bibliothek verwenden möchten, können Sie die Bibliothek selektiv importieren. Die Syntax dafür ist unten angegeben -

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

Einige häufig verwendete Bibliotheken sind unten angegeben -

Sr.Nr. Bibliothek & Beschreibung
1

dart:io

Datei-, Socket-, HTTP- und andere E / A-Unterstützung für Serveranwendungen. Diese Bibliothek funktioniert nicht in browserbasierten Anwendungen. Diese Bibliothek wird standardmäßig importiert.

2

dart:core

Integrierte Typen, Sammlungen und andere Kernfunktionen für jedes Dart-Programm. Diese Bibliothek wird automatisch importiert.

3

dart: math

Mathematische Konstanten und Funktionen sowie ein Zufallszahlengenerator.

4

dart: convert

Codierer und Decodierer zum Konvertieren zwischen verschiedenen Datendarstellungen, einschließlich JSON und UTF-8.

5

dart: typed_data

Listen, die Daten mit fester Größe effizient verarbeiten (z. B. vorzeichenlose 8-Byte-Ganzzahlen).

Beispiel: Importieren und Verwenden einer Bibliothek

Im folgenden Beispiel wird die integrierte Bibliothek importiert dart: math. Das Snippet ruft das aufsqrt() Funktion von der mathBibliothek. Diese Funktion gibt die Quadratwurzel einer an sie übergebenen Zahl zurück.

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

Output

Square root of 36 is: 6.0

Kapselung in Bibliotheken

Dart-Skripte können Bezeichnern einen Unterstrich (_) voranstellen, um ihre Komponenten als privat zu markieren. Einfach ausgedrückt, können Dart-Bibliotheken den Zugriff auf ihre Inhalte durch externe Skripte einschränken. Dies wird als bezeichnetencapsulation. Die Syntax dafür ist unten angegeben -

Syntax

_identifier

Beispiel

Definieren Sie zunächst eine Bibliothek mit einer privaten Funktion.

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

Importieren Sie als Nächstes die Bibliothek

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

Der obige Code führt zu einem Fehler.

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)

Benutzerdefinierte Bibliotheken erstellen

Mit Dart können Sie auch Ihren eigenen Code als Bibliothek verwenden. Das Erstellen einer benutzerdefinierten Bibliothek umfasst die folgenden Schritte:

Step 1: Declaring a Library

Verwenden Sie die, um eine Bibliothek explizit zu deklarieren library statement. Die Syntax zum Deklarieren einer Bibliothek lautet wie folgt:

library library_name  
// library contents go here

Step 2: Associating a Library

Sie können eine Bibliothek auf zwei Arten zuordnen:

  • Im selben Verzeichnis
import 'library_name'
  • Aus einem anderen Verzeichnis
import 'dir/library_name'

Beispiel: Benutzerdefinierte Bibliothek

Definieren wir zunächst eine benutzerdefinierte Bibliothek. 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); 
}

Als nächstes werden wir die Bibliothek importieren -

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"); 
}

Das Programm sollte Folgendes erzeugen output - -

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

Bibliothekspräfix

Wenn Sie zwei Bibliotheken mit widersprüchlichen Bezeichnern importieren, können Sie ein Präfix für eine oder beide Bibliotheken angeben. Verwenden Sie die'as'Schlüsselwort zur Angabe des Präfixes. Die Syntax dafür ist unten angegeben -

Syntax

import 'library_uri' as prefix

Beispiel

Definieren wir zunächst eine Bibliothek: loggerlib.dart.

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

Als nächstes definieren wir eine andere Bibliothek: webloggerlib.dart.

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

Schließlich importieren wir die Bibliothek mit einem Präfix.

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

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

Es wird Folgendes erzeugt output - -

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