Programowanie w rzutki - biblioteki

Biblioteka w języku programowania reprezentuje zbiór procedur (zestaw instrukcji programistycznych). Dart ma zestaw wbudowanych bibliotek, które są przydatne do przechowywania często używanych procedur. Biblioteka Dart składa się z zestawu klas, stałych, funkcji, typów definicji, właściwości i wyjątków.

Importowanie biblioteki

Importowanie sprawia, że ​​komponenty w bibliotece są dostępne dla kodu wywołującego. Służy do tego słowo kluczowe import. Plik rzutki może zawierać wiele instrukcji importu.

Identyfikatory URI wbudowanej biblioteki Dart używają schematu dart: schemat do odwoływania się do biblioteki. Inne biblioteki mogą używać ścieżki do systemu plików lub pakietu: schemat, aby określić swój identyfikator URI. Biblioteki dostarczane przez menedżera pakietów, takie jak narzędzie publikacji, używają pakietu: schemat .

Składnia importu biblioteki w Dart jest podana poniżej -

import 'URI'

Rozważ następujący fragment kodu -

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

Jeśli chcesz użyć tylko części biblioteki, możesz ją zaimportować selektywnie. Składnię tego samego podano poniżej -

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

Poniżej podano niektóre powszechnie używane biblioteki -

Sr.No Biblioteka i opis
1

dart:io

Obsługa plików, gniazd, HTTP i innych operacji we / wy dla aplikacji serwerowych. Ta biblioteka nie działa w aplikacjach opartych na przeglądarce. Ta biblioteka jest domyślnie importowana.

2

dart:core

Wbudowane typy, kolekcje i inne podstawowe funkcje dla każdego programu Dart. Ta biblioteka jest automatycznie importowana.

3

dart: math

Stałe i funkcje matematyczne oraz generator liczb losowych.

4

dart: convert

Kodery i dekodery do konwersji między różnymi reprezentacjami danych, w tym JSON i UTF-8.

5

dart: typed_data

Listy, które wydajnie obsługują dane o stałym rozmiarze (na przykład 8-bajtowe liczby całkowite bez znaku).

Przykład: Importowanie i używanie biblioteki

Poniższy przykład importuje wbudowaną bibliotekę dart: math. Fragment wywołujesqrt() funkcja z mathbiblioteka. Ta funkcja zwraca pierwiastek kwadratowy z podanej liczby.

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

Output

Square root of 36 is: 6.0

Hermetyzacja w bibliotekach

Skrypty Dart mogą poprzedzać identyfikatory znakiem podkreślenia (_), aby oznaczyć komponenty jako prywatne. Mówiąc najprościej, biblioteki Dart mogą ograniczać dostęp do swoich treści przez zewnętrzne skrypty. Nazywa się toencapsulation. Składnię tego samego podano poniżej -

Składnia

_identifier

Przykład

Najpierw zdefiniuj bibliotekę z funkcją prywatną.

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

Następnie zaimportuj bibliotekę

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

Powyższy kod spowoduje błąd.

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)

Tworzenie bibliotek niestandardowych

Dart pozwala również na użycie własnego kodu jako biblioteki. Tworzenie biblioteki niestandardowej obejmuje następujące kroki -

Step 1: Declaring a Library

Aby jawnie zadeklarować bibliotekę, użyj library statement. Składnia deklarowania biblioteki jest taka, jak podano poniżej -

library library_name  
// library contents go here

Step 2: Associating a Library

Bibliotekę można skojarzyć na dwa sposoby -

  • W tym samym katalogu
import 'library_name'
  • Z innego katalogu
import 'dir/library_name'

Przykład: biblioteka niestandardowa

Najpierw zdefiniujmy bibliotekę niestandardową, 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); 
}

Następnie zaimportujemy bibliotekę -

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

Program powinien generować następujące elementy output -

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

Przedrostek biblioteki

Jeśli importujesz dwie biblioteki z kolidującymi identyfikatorami, możesz określić przedrostek dla jednej lub obu bibliotek. Użyj'as'słowo kluczowe do określania przedrostka. Składnię tego samego podano poniżej -

Składnia

import 'library_uri' as prefix

Przykład

Najpierw zdefiniujmy bibliotekę: loggerlib.dart.

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

Następnie zdefiniujemy kolejną bibliotekę: webloggerlib.dart.

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

Na koniec zaimportujemy bibliotekę z prefiksem.

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

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

Spowoduje to, co następuje output -

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