Cấu trúc dữ liệu (Bài trước)
(Bài tiếp) Generic trong Dart

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ọc dart:math thì dùng
    import '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ó file lib/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ạng package:tên_gói/thư_viện_gói. Ví dụ gói googleapis_auth, có thành phần auth_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ằng
    import "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


Đăng ký nhận bài viết mới
Cấu trúc dữ liệu (Bài trước)
(Bài tiếp) Generic trong Dart