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