Flutist: Tôi đã tạo một framework quản lý kiến trúc mô-đun Flutter! (feat. Tuist)
(flutist-1pn8eqs9s-seonwookes-projects.vercel.app)Khi quy mô của một dự án Flutter tăng lên, bạn thường sẽ chọn mô-đun hóa (tách package) để cải thiện hiệu năng build và cách ly giữa các layer. Tuy nhiên, khi số lượng mô-đun tăng lên, chi phí quản lý hàng chục file pubspec.yaml cũng tăng theo, và chỉ dựa vào code review thì rất khó cưỡng chế các quy tắc kiến trúc.
Flutist là một framework được thiết kế để bạn có thể khai báo và quản lý đặc tả cũng như quy tắc của dự án bằng code trên nền pub workspaces của Dart 3.6+, lấy cảm hứng từ Tuist trên iOS.
"Vì sao là Flutist?"
-
Cấu hình dự án theo kiểu khai báo
Thay vì sửa trực tiếppubspec.yamlcủa từng mô-đun, bạn khai báo phiên bản package trongpackage.dartvà đồ thị phụ thuộc giữa các mô-đun trongproject.dart. Chỉ với một lần định nghĩa, toàn bộpubspec.yamlcủa các mô-đun sẽ được đồng bộ bằng lệnhflutist generate. -
Tự động cưỡng chế quy tắc kiến trúc
Trong Clean Architecture, ngay cả khi domain tham chiếu trực tiếp đến data hoặc phát sinh phụ thuộc vòng tròn thì pub cũng không ngăn chặn. Flutist cho phép bậtstrictMode, và nếu vi phạm các quy tắc này thì sẽ báo lỗi khigenerate. Những nguyên tắc trước đây chỉ nằm trong tài liệu/code review nay trở thành các quy tắc có thể thực thi. -
An toàn kiểu và năng suất
Thay vì tham chiếu package dựa trên chuỗi, công cụ hỗ trợ IDE tự động hoàn thành và kiểm tra kiểu tại thời điểm biên dịch thông qua các accessor được sinh tự động. Ngoài ra, Flutist còn cung cấp tính năng scaffolding để tạo cấu trúc layer lặp đi lặp lại hoặc boilerplate, giúp giảm tối đa chi phí thiết lập ban đầu. -
Tối ưu trải nghiệm phát triển
Không chỉ hỗ trợ chạy test song song hoặc riêng lẻ theo từng mô-đun,flutist graphcòn cho phép bạn xem ngay trực quan các phụ thuộc mô-đun phức tạp trong trình duyệt.
4 loại mô-đun được hỗ trợ
clean— Clean Architecture 3 layer (domain / data / presentation)micro— Microfeature 5 layer (interface / implementation / testing / tests / example)lite— 4 layer, là bảnmicrođã loại bỏexamplesimple— package đơn (dùng cho tiện ích, shared model, app shell)
Lệnh CLI
flutist init/create/generate/check/pub/scaffold/test/graphflutist checkchỉ kiểm tra kiến trúc mà không tạo file → dành cho pipeline CI- Dùng
flutist graph --openđể xem trực tiếp đồ thị phụ thuộc mermaid trong trình duyệt
Liên kết
- Docs: https://flutist-web.vercel.app/docs
- pub.dev: https://pub.dev/packages/flutist
- GitHub: https://github.com/seonwooke/flutist
Nếu bạn đang cân nhắc về kiến trúc multi-module cho Flutter, tôi khuyến nghị thử áp dụng Flutist. Nếu bạn gửi phản hồi, tôi sẽ tích cực tiếp thu và phản ánh vào dự án! Xin cảm ơn🙏
Chưa có bình luận nào.