Nạp thư viện trong Dart
Một thư viện có thể chứa tập hợp các lớp, hàm, hằng ... để bạn nạp vào và sử dụng khi cần thiết.
Trong Dart để nạp thư viện bạn dùng từ khóa import
ở đầu file. Với cú pháp:
import 'uri';
Nếu chỉ nạp một phần nào đó của thư viện sử dụng thêm từ khóa show
có dạng
import 'uri' show part1, part2, part3;
Khi nạp thư viện, để tránh xung đột về tên, bạn cũng có thể đặt lại bằng as
Trong đó uri
như là một định danh duy nhất trỏ đến thư viên cần nạp. Nó có thể có các dạng:
- Các thư viện xây dựng sẵn của Dart có cấu trúc uri
dart:tên_thư_viện
ví dụdart:convert
,dart:html
,dart:math
,dart:js
,dart:web_sql
. Ví dụ cần nạp thư viện toán họcdart:math
thì dùngimport 'dart:math';
- Nạp từ file dự án, thì
url
chỉ đến đường dẫn file dart cần nạp vào. Ví dụ bạn có filelib/mylib.dart
trong dự án thì nạp vào dùng bằng:import 'lib/mylib.dart';
- Thư viện nạp từ các gói
package
tải về, thì uri có dạngpackage:tên_gói/thư_viện_gói
. Ví dụ gói googleapis_auth, có thành phầnauth_browser
cung cấp chức năng xác thực Auth với tài khoản google, thì nạp thư viện đó vào bằngimport "package:googleapis_auth/auth_browser.dart";
Phần sau sẽ nói cách tải về các gói package
Các thư viện cung cấp sẵn
Những thư viện Dart
đi cùng SDK Dart
, bạn có thể nạp luôn bằng import 'dart:tên_thư_viên'
,
danh sách thư viện như: (chi tiết tại LIBRARIES)
Thư viện | Chức năng |
---|---|
dart:core |
Thư viện cung cấp các hàm, lớp cơ bản, nó tự động nạp nên bạn không cần import thư viện này |
dart:collection |
Cung cấp các cấu trúc dư liệu như HashSet, HashMap, Queue ... |
dart:math |
Cung cấp hàm toán học |
dart:convert |
Tính năng mã hóa, giải mã dữ liệu, kể cả JSON, UTF-8 |
dart:io |
Thư viện IO cung cấp các chức năng về File, Socket, HTTP |
|
Một số thư viện dánh cho WEB như dart:js , dart:html ... |
Tạo thư viện trong Dart
Giả sự dự án của bạn muốn tạo ra một thư viện có tên myfirstlib
, thì bạn tạo ra file myfirstlib.dart
có đường dẫn nằm trong dự án, ví dụ lib/myfirstlib.dart
Sau đó bạn code các hàm, lớp ... trong file này, ở đầu file này có đặt dòng khai báo là thư viện:
library myfirstlib;
Sau đó khi nào cần sử dụng thư viện này chỉ việc gọi:
import 'lib/myfirstlib.dart';
Sau khi import là có thể dùng đến các thành phần lớp, hàm, hằng ... định nghĩa trong thư viện.
Cũng lưu ý, nếu thành phần nà (hàm, lớp ...) có tên bắt đầu bằng _
thì nó là của riêng thư viện,
không thể import dùng được
Ví dụ nội dung myfirstlib.dart
library myfirstlib; class A { show() { print(this); } } class _B { show() { print(this); } } void _abc() { } void xyz() { _B().show(); }
Thì lớp _B
không thể import được, hàm _abc
không thể import được.
Hoặc chỉ nạp hàm xyz
thì gọi
import 'lib/myfirstlib.dart' show xyz;
Cài đặt các gói
Dart cũng có trình quản lý gói package riêng là pub
(nó giống NPM của NodeJS, giống Nuget của .Net,
Gradle của Java ...)
Tìm các Package ở đâu, các gói được chia sẻ và cung cấp lưu tại DART PUB, bạn chỉ việc tìm kiếm ở đó, gói thư viện nào phù hợp thì tích hợp vào dự án!
Để tích hợp được các gói vào dự án, thì ở thư mục gốc của dự án bạn phải có file pubspec.yaml
,
nếu chưa có hãy tạo ra nó.
Sau đó liệt kê các gói cần tích hợp ở mục dependencies
, liệt kê đúng cấu trúc yaml
,
mộc package chỉ ra tên tên_packe
: version_nhỏ_nhất
name: Ten_du_an description: Mô tả cho dự án dependencies: package1: '^version_pack1' package2: '^version_pack2' package3: '^version_pack3'
Ví dụ muốn dùng package dialog, thì file pubspec.yaml
name: Ten_du_an_cua_toi description: Mô tả cho dự án dependencies: dialog: '^0.7.0'
Dùng thêm package google_maps thì thêm vào:
name: Ten_du_an_cua_toi description: Mô tả cho dự án dependencies: dialog: '^0.7.0' google_maps: '^3.3.2'
Chú ý name là tên dự án của bạn, đặt theo quy tắc đặt tên biến
Khi có file pubspec.yaml
từ terminate
chỉ việc chạy các lệnh pub
để cài đặt, cập nhật ...
Cài đặt các package gõ lệnh pub get
# pub get Resolving dependencies... + dialog 0.7.0 + google_maps 3.3.2 + js_wrapping 0.5.0 + meta 1.1.6
Tương tự, để cập nhật phiên bản các package gõ lệnh pub update
Sau khi cài được các package thì chỉ việc dùng import
để nạp package, và sử dụng