Pemrograman Dart - Perpustakaan

Sebuah perpustakaan dalam bahasa pemrograman merepresentasikan kumpulan rutinitas (sekumpulan instruksi pemrograman). Dart memiliki sekumpulan pustaka bawaan yang berguna untuk menyimpan rutinitas yang sering digunakan. Pustaka Dart terdiri dari sekumpulan kelas, konstanta, fungsi, typedef, properti, dan pengecualian.

Mengimpor perpustakaan

Mengimpor membuat komponen di pustaka tersedia untuk kode pemanggil. Kata kunci impor digunakan untuk mencapai hal yang sama. File dart dapat memiliki beberapa pernyataan impor.

URI library Dart bawaan menggunakan skema dart: untuk merujuk ke library. Pustaka lain bisa menggunakan jalur sistem file atau skema paket: untuk menentukan URI-nya. Library yang disediakan oleh manajer paket seperti alat pub menggunakan package: scheme .

Sintaks untuk mengimpor perpustakaan di Dart diberikan di bawah ini -

import 'URI'

Pertimbangkan cuplikan kode berikut -

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

Jika Anda ingin menggunakan hanya sebagian dari pustaka, Anda bisa mengimpor pustaka secara selektif. Sintaks yang sama diberikan di bawah ini -

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

Beberapa perpustakaan yang umum digunakan diberikan di bawah ini -

Sr Tidak Perpustakaan & Deskripsi
1

dart:io

File, soket, HTTP, dan dukungan I / O lainnya untuk aplikasi server. Pustaka ini tidak berfungsi dalam aplikasi berbasis browser. Perpustakaan ini diimpor secara default.

2

dart:core

Jenis bawaan, koleksi, dan fungsionalitas inti lainnya untuk setiap program Dart. Perpustakaan ini diimpor secara otomatis.

3

dart: math

Konstanta dan fungsi matematika, ditambah generator bilangan acak.

4

dart: convert

Encoder dan decoder untuk mengonversi antara representasi data yang berbeda, termasuk JSON dan UTF-8.

5

dart: typed_data

Daftar yang secara efisien menangani data berukuran tetap (misalnya, unsigned 8 byte integer).

Contoh: Mengimpor dan menggunakan Perpustakaan

Contoh berikut mengimpor pustaka bawaan dart: math. Cuplikan tersebut memanggilsqrt() fungsi dari mathPerpustakaan. Fungsi ini mengembalikan akar kuadrat dari angka yang diteruskan padanya.

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

Output

Square root of 36 is: 6.0

Enkapsulasi di Perpustakaan

Skrip Dart dapat mengawali pengenal dengan garis bawah (_) untuk menandai komponennya sebagai pribadi. Sederhananya, perpustakaan Dart dapat membatasi akses ke kontennya dengan skrip eksternal. Ini disebut sebagaiencapsulation. Sintaks yang sama diberikan di bawah ini -

Sintaksis

_identifier

Contoh

Pertama-tama, tentukan perpustakaan dengan fungsi privat.

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

Selanjutnya, impor perpustakaan

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

Kode di atas akan menghasilkan error.

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)

Membuat Perpustakaan Kustom

Dart juga memungkinkan Anda menggunakan kode Anda sendiri sebagai perpustakaan. Membuat pustaka kustom melibatkan langkah-langkah berikut -

Step 1: Declaring a Library

Untuk mendeklarasikan perpustakaan secara eksplisit, gunakan library statement. Sintaks untuk mendeklarasikan perpustakaan seperti yang diberikan di bawah ini -

library library_name  
// library contents go here

Step 2: Associating a Library

Anda dapat mengaitkan perpustakaan dengan dua cara -

  • Di dalam direktori yang sama
import 'library_name'
  • Dari direktori yang berbeda
import 'dir/library_name'

Contoh: Perpustakaan Kustom

Pertama, mari kita tentukan perpustakaan khusus, 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); 
}

Selanjutnya, kami akan mengimpor perpustakaan -

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 tersebut harus menghasilkan yang berikut ini output -

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

Awalan Perpustakaan

Jika Anda mengimpor dua pustaka dengan pengenal yang bentrok, Anda bisa menentukan awalan untuk satu atau kedua pustaka. Menggunakan'as'kata kunci untuk menentukan awalan. Sintaks yang sama diberikan di bawah ini -

Sintaksis

import 'library_uri' as prefix

Contoh

Pertama, mari kita tentukan perpustakaan: loggerlib.dart.

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

Selanjutnya, kami akan menentukan perpustakaan lain: webloggerlib.dart.

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

Terakhir, kami akan mengimpor pustaka dengan awalan.

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

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

Ini akan menghasilkan yang berikut ini output -

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