Lập trình Dart - Thư viện

Một thư viện trong ngôn ngữ lập trình đại diện cho một tập hợp các thói quen (tập hợp các lệnh lập trình). Dart có một bộ thư viện tích hợp rất hữu ích để lưu trữ các quy trình thường xuyên được sử dụng. Thư viện Dart bao gồm một tập hợp các lớp, hằng số, hàm, typedef, thuộc tính và ngoại lệ.

Nhập thư viện

Nhập làm cho các thành phần trong thư viện có sẵn cho mã người gọi. Từ khóa nhập khẩu được sử dụng để đạt được điều tương tự. Một tệp phi tiêu có thể có nhiều câu lệnh nhập.

Các URI của thư viện Dart được tạo sẵn sử dụng lược đồ dart: để tham chiếu đến một thư viện. Các thư viện khác có thể sử dụng đường dẫn hệ thống tệp hoặc lược đồ package: để chỉ định URI của nó. Các thư viện được cung cấp bởi trình quản lý gói, chẳng hạn như công cụ quán rượu sử dụng gói: lược đồ .

Cú pháp để nhập thư viện trong Dart được đưa ra dưới đây:

import 'URI'

Hãy xem xét đoạn mã sau -

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

Nếu bạn chỉ muốn sử dụng một phần của thư viện, bạn có thể nhập thư viện một cách chọn lọc. Cú pháp tương tự được đưa ra dưới đây:

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

Dưới đây là một số thư viện thường được sử dụng:

Sr.No Thư viện & Mô tả
1

dart:io

Hỗ trợ tệp, ổ cắm, HTTP và I / O khác cho các ứng dụng máy chủ. Thư viện này không hoạt động trong các ứng dụng dựa trên trình duyệt. Thư viện này được nhập theo mặc định.

2

dart:core

Tích hợp các loại, bộ sưu tập và chức năng cốt lõi khác cho mọi chương trình Dart. Thư viện này được nhập tự động.

3

dart: math

Hằng số và hàm toán học, cộng với một trình tạo số ngẫu nhiên.

4

dart: convert

Bộ mã hóa và bộ giải mã để chuyển đổi giữa các biểu diễn dữ liệu khác nhau, bao gồm JSON và UTF-8.

5

dart: typed_data

Danh sách xử lý hiệu quả dữ liệu có kích thước cố định (ví dụ: số nguyên 8 byte không dấu).

Ví dụ: Nhập và sử dụng Thư viện

Ví dụ sau đây nhập thư viện tích hợp sẵn dart: math. Đoạn mã gọisqrt() chức năng từ maththư viện. Hàm này trả về căn bậc hai của một số được truyền cho nó.

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

Output

Square root of 36 is: 6.0

Đóng gói trong thư viện

Các tập lệnh Dart có thể đặt tiền tố định danh bằng dấu gạch dưới (_) để đánh dấu các thành phần của nó là riêng tư. Nói một cách đơn giản, các thư viện Dart có thể hạn chế quyền truy cập vào nội dung của nó bằng các tập lệnh bên ngoài. Điều này được gọi làencapsulation. Cú pháp tương tự được đưa ra dưới đây:

Cú pháp

_identifier

Thí dụ

Lúc đầu, hãy xác định một thư viện với một chức năng riêng.

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

Tiếp theo, nhập thư viện

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

Đoạn mã trên sẽ dẫn đến lỗi.

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)

Tạo thư viện tùy chỉnh

Dart cũng cho phép bạn sử dụng mã của riêng mình như một thư viện. Tạo một thư viện tùy chỉnh bao gồm các bước sau:

Step 1: Declaring a Library

Để khai báo thư viện một cách rõ ràng, hãy sử dụng library statement. Cú pháp khai báo thư viện như sau:

library library_name  
// library contents go here

Step 2: Associating a Library

Bạn có thể liên kết thư viện theo hai cách -

  • Trong cùng một thư mục
import 'library_name'
  • Từ một thư mục khác
import 'dir/library_name'

Ví dụ: Thư viện tùy chỉnh

Trước tiên, hãy để chúng tôi xác định một thư viện tùy chỉnh, 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); 
}

Tiếp theo, chúng tôi sẽ nhập thư viện -

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

Chương trình sẽ tạo ra những điều sau output -

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

Tiền tố thư viện

Nếu bạn nhập hai thư viện có số nhận dạng xung đột, thì bạn có thể chỉ định tiền tố cho một hoặc cả hai thư viện. Sử dụng'as'từ khóa để chỉ định tiền tố. Cú pháp tương tự được đưa ra dưới đây:

Cú pháp

import 'library_uri' as prefix

Thí dụ

Đầu tiên, chúng ta hãy xác định một thư viện: loggerlib.dart.

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

Tiếp theo, chúng tôi sẽ xác định một thư viện khác: webloggerlib.dart.

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

Cuối cùng, chúng tôi sẽ nhập thư viện với một tiền tố.

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

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

Nó sẽ tạo ra những thứ sau output -

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