Giới thiệu về Package trong Flutter

Giới thiệu về Package trong Flutter

Rate this post

Cách mà Dart quản lý và chia sẽ những tập hợp chức năng sẽ thông qua Package. Package trong Dart đơn giản là những thư viện hoặc module có thể chia sẽ.

Các bài viết liên quan:

Cấu trúc chung của Pakage trong Flutter

Cấu trúc chung của Package (giả sử ta có một package demo, my_demo_package) sẽ liệt kệ dưới đây:

  • lib/src/* – các file code dart private
  • lib/my_demo_package.dart – file code Dart chính. Nó có thể được truyền vào ứng dụng như sau:
Giới thiệu về Package trong Flutter
  • file code khác có thể được xuất vào trong file code chính (my_demo_package.dart), nếu cần thiết theo như hình bên dưới:
Giới thiệu về Package trong Flutter
  • lib/* – bất cứ file dart nào được sắp xếp trong cấu trúc thư mục tùy chỉnh đều có thể được truy cập như sau:
Giới thiệu về Package trong Flutter
  • pubspec.yaml – file cấu hình của cả project
  • Tất cả file Dart trong Package đơn giản là các lớp của Dart và nó không có nhiều yêu cầu đặc biệt gì để Dart gói nó vào package.

Các loại Package của Flutter

Vì các package dart về cơ bản là một tập hợp nhỏ có các chức năng tương tự nhau, nó có thể được phân bổ dựa vào chức năng của nó.

Package Dart

Là một tập hợp các code Dart tổng quát, có thể được sử dụng ở cả môi trường web lẫn thiết bị di động. Ví dụ như package endglish_words là một package có chứa 5000 từ tiếng anh và có các chức năng cơ bản như nouns(liệt kê các danh từ trong tiếng anh), syllables (đưa ra số âm tiết cụ thể của một từ).

Package Flutter

Là một tập hợp các code Dart tổng quát nhưng nó phụ thuộc vào framework Flutter và có thể được sử dụng duy nhất trong môi trường thiết bị di động. Ví dụ như fluro là một custom router cho flutter. Nó phụ thuộc vào framework Flutter.

Plugin Flutter

Là một tập hợp các code Dart tổng quát, nhưng nó phụ thuộc vào framework Flutter cũng như phụ thuộc vào các code theo nền tảng cơ bản (Android SDK hoặc iOS SDK). Ví dụ như camera là một plugin dùng để tương tác với thiết bị camera. Nó phụ thuộc vào framework Flutter cũng như các framework cơ bản dùng để kết nối với camera.

Sử dụng package Dart

Package trong Dart được lưu trữ và xuất bản vào máy chủ trực tuyến như ở https://pub.dartlang.org, ngoài ra Flutter cung cấp cho ta một bộ dụng cụ đơn giản là pub để quản lý các package Dart trong ứng dụng. Các bước cần thiết để sử dụng Package như sau:

Nhập tên và phiên bản cần vào trong pubspec.yaml như sau:

Giới thiệu về Package trong Flutter

Số của phiên bản mới nhất có thể tìm thấy bằng cách kiểm tra trên server của flutter.

Cài đặt package vào trong ứng dụng bằng lệnh sau:

Giới thiệu về Package trong Flutter

Nhập các file cần thiết bằng cách sử dụng lệnh như sau:

Giới thiệu về Package trong Flutter

Phát triển một Plugin Package trong Flutter

Giới thiệu về Package trong Flutter

Phát triển một plugin trong Flutter cũng giống như phát triển một ứng dụng Dart hoặc package Dart. Điều khác biệt duy nhất là plugin sử dụng System API (Android hoặc iOS) để lấy các hàm đặc biệt cần thiết của từng nền tảng.

Giờ ta sẽ phát triển một plugin đơn giản là my_browser để hiểu rõ quá trình phát triển plugin. Chức năng chính của plugin my_browser là cho phép ứng dụng mở một trang web có sẵn trong browser của nền tảng người dùng đang sử dụng.

Mở cmd ở bất cứ chổ nào bạn muốn lưu trữ project ở đây –template=plugin sẽ là loại của project chúng ta sẽ tạo, my_browser ở cuối là tên của project

Mở Visual Studio Code và bấm vào File -> Open Folder và trỏ tới project ta vừa tạo, ta sẽ ra màn hình như sau:

Giới thiệu về Package trong Flutter

Ta vào file my_browser.dart và viết một hàm openBrowser để gọi hàm openBrowser của nền tảng đó.

Giới thiệu về Package trong Flutter

Mở MyBrowserPlugin.java và import các class sau:

Giới thiệu về Package trong Flutter
Giới thiệu về Package trong Flutter

Tại đây ta import các thư viện cần thiết để mở browser trong Android.

Thêm một biến private tên mRegistrar của loại Registra vào trong lớp MyBrowserPlugin

Giới thiệu về Package trong Flutter

Ở đây, registrar được sử dụng để lấy thông tin context của code liên quan.

Thêm một hàm dựng để đặt Registrar trong class MyBrowserPlugin

Giới thiệu về Package trong Flutter

Thay đổi registerWith để truyền hàm dựng mới trong class MyBrowserPlugin.

Giới thiệu về Package trong Flutter

Thay đổi onMethodCall để truyền hàm openBrowser vào trong class MyBrowserPlugin

Giới thiệu về Package trong Flutter

Viết một hàm openBrowser cho nền tãng để truy cập browser trong class MyBrowserPlugin

Giới thiệu về Package trong Flutter

Bước tạo plugin đã hoàn tất, giờ ta sẽ tạo một project mới là my_browser_plugin_test để kiểm thử plugin ta mới vừa tạo.

Mở pubspec.yaml và đặt my_browser trong dependencies

Giới thiệu về Package trong Flutter

sau đó ta save file pubspec.yaml thì VSC sẽ tự động get và check các package của chúng ta.

Mở file main.dart và import plugin my_browser vào

Giới thiệu về Package trong Flutter

Gọi hàm openBrowser từ plugin my_browser như sau

Giới thiệu về Package trong Flutter

Code hoàn chỉnh của main.dart như sau

Giới thiệu về Package trong Flutter

Chạy ứng dụng và nhấn vào nút Open Browser và chúng ta sẽ thấy browser đã được khởi động. Ta có thể thấy ứng dụng Browser – trang chính như các hình chụp dưới đây

Giới thiệu về Package trong Flutter
Giới thiệu về Package trong Flutter

Leave a Reply