Chuyển đến nội dung chính

Flutter Zero: Flutter khi bỏ đi dart:ui

flutter_zero có lẽ là repo Flutter thú vị nhất năm 2026 mà gần như không ai đưa lên production. Đây là Flutter đã cắt gần hết dart:ui — không widget, không Skia, không Impeller — chỉ còn một runtime Dart vẫn build và chạy được bằng lệnh flutter thông thường. 274★, BSD-3-Clause, cập nhật lần cuối 2026-08-08, của Matej Knopp, tác giả flutter_reorderable_list đã có mặt trong các app Flutter nhiều năm nay.

Flutter Zero là gì?

Flutter Zero là một bản Flutter rút gọn, không giả định gì về lớp UI. Thứ còn lại là một runtime Dart bạn có thể triển khai tới mọi nền tảng Flutter hỗ trợ, cộng với toàn bộ chuỗi công cụ quanh nó.

Phần cuối mới là chỗ khéo. Flutter Zero không phải bản fork của repo Flutter — nó là repo mới chứa một tập con rất nhỏ, chọn sao cho checkout nhanh và dung lượng đĩa thấp. Nhưng nó vẫn tương thích với flutter_tool, nên flutter create, flutter buildflutter run đều chạy, và plugin VS Code lẫn IntelliJ vẫn hoạt động, trừ phần widget inspector vốn chẳng còn gì để kiểm tra.

Vì sao đáng quan tâm trong năm 2026

Lập luận trong README đáng đọc trọn vẹn, nhưng tóm gọn thế này: dart:ui được thiết kế trong những ràng buộc nay không còn đúng nữa.

Mô hình luồng đã thay đổi. FFI tiến bộ rất nhiều. Tương tác đồng bộ hai chiều giữa Dart và API nền tảng giờ đã khả thi, khiến giao thức platform channel — bất đồng bộ, không kiểu, đặc thù từng chỗ — bớt cần thiết hẳn. Và native assets cho phép package thường cũng đóng góp mã native với bước build riêng.

Cộng lại, một điều bất khả thi năm 2018 nay trông khả thi năm 2026: một dart:ui mô-đun nằm trong package, với interface Dart tử tế và phần hiện thực FFI hoặc JNI theo từng nền tảng, thay vì một khối nguyên biên dịch thẳng vào engine.

Flutter Zero là thử nghiệm kiểm chứng nửa dưới của ý tưởng đó. Và lặng lẽ, nó cũng là con đường khả tín nhất tới lúc này để viết ứng dụng Dart với giao diện native thật sự — SwiftUI trên nền tảng Apple, Jetpack Compose trên Android — mà vẫn giữ Dart, pub và toolchain Flutter.

Bắt đầu như thế nào

Không có package nào trên pub để cài; Flutter Zero là một biến thể engine và SDK, không phải dependency. Hãy clone repo và làm theo hướng dẫn build:

git clone https://github.com/knopp/flutter_zero.git

Đã có sẵn bản engine dựng trước cho mọi nền tảng Flutter hỗ trợ, nên bạn không cần tự biên dịch engine để thử. Sau đó quy trình vẫn như thường — package examples/hello_world trong workspace của repo là thứ nhỏ nhất chạy được.

Hãy chuẩn bị tinh thần đọc mã nguồn. Repo đủ nhỏ để việc đó là khả thi, điều không thể nói về engine Flutter chính.

Khi nào nên nhìn tới Flutter Zero?

  • bạn muốn một ứng dụng Dart trên mobile hoặc desktop với giao diện native, và phần render của Flutter là gánh nặng chứ không phải lợi thế
  • bạn xây một tiến trình Dart chạy nền — daemon, CLI, agent — và muốn câu chuyện build/triển khai đa nền tảng của Flutter mà không phải mang theo bộ render
  • bạn tò mò về nội tại engine và muốn một codebase đủ nhỏ để thực sự đọc hết
  • bạn đang thử nghiệm một dart:ui thay thế và cần một môi trường chưa có sẵn cái nào

Điểm còn hạn chế

Hãy thành thật về hiện trạng. Câu trả lời của chính tác giả cho “dùng được ngay chưa?” là “được, nhưng rất thô”.

Mô hình đơn luồng là điểm gai nhất: toàn bộ mã Dart chạy trên platform thread và không hỗ trợ cấu hình nào khác. Mọi thứ giả định mô hình luồng chuẩn của Flutter đều phải nghĩ lại.

Ngoài ra, gần như cả hệ sinh thái package đều giả định dart:ui tồn tại. Bất kỳ package nào đụng tới widget, vẽ, ảnh hay dàn chữ đều không chạy. Bạn đang xây trên một runtime, không phải một framework, và phần thiếu là việc của bạn.

Cũng không có cam kết lộ trình nào. README xếp chuyện đặt tên vào ưu tiên thấp và mô tả việc chạy app Flutter bình thường trên nền Flutter Zero là thứ cần “rất nhiều may mắn và động lực”. Hãy hiểu đúng tín hiệu đó.

Các lựa chọn đáng so sánh

Câu hỏi thường gặp

Có dùng Flutter Zero cho sản phẩm thật được không?

Không. Chính tác giả mô tả dự án là rất thô và mang tính thử nghiệm. Đã có bản engine build cho mọi nền tảng Flutter hỗ trợ và bạn build/run ứng dụng thật được, nhưng không có cam kết ổn định, không có lịch phát hành, và không có hệ sinh thái package nào được viết cho một dart:ui không có UI.

Flutter Zero còn dùng được lệnh flutter và plugin IDE không?

Có, và đó chính là ràng buộc thiết kế cốt lõi. flutter create, flutter buildflutter run hoạt động bình thường; plugin VS Code và IntelliJ vẫn chạy, trừ phần kiểm tra cây widget. Tác giả cố tình không viết lại flutter_tool từ đầu.

Mô hình luồng (threading) ra sao?

Toàn bộ mã Dart chạy trên platform thread. Không hỗ trợ cấu hình luồng nào khác. Đây là sự đơn giản hóa có chủ đích, và khác hẳn Flutter tiêu chuẩn nơi UI thread tách khỏi platform thread.

Vì sao lại gỡ bỏ dart:ui?

Vì nó gắn chặt với engine và được thiết kế trong những ràng buộc nay đã khác. Mô hình luồng đã thay đổi, FFI tốt hơn nhiều, gọi đồng bộ giữa Dart và nền tảng đã khả thi, và native assets cho phép package tự mang mã native. Một dart:ui mô-đun đóng gói dạng package giờ trông khả thi.

Tài nguyên & liên kết


Thuộc FlutterCook — hướng dẫn thực hành về các thư viện, UI kit và ứng dụng Flutter mã nguồn mở tốt nhất. Xem xu hướng GitHub hoặc hướng dẫn YouTube.


Bài viết gốc đăng tại FlutterCook. Bản trên đó là bản được cập nhật mới nhất.

Nhận xét

Bài đăng phổ biến từ blog này

5 concepts every Flutter dev should know

  Phụ lục: State management architecture Testing IDE Shortcuts Platform channel Maintaining a project Tôi đã làm việc với Flagship trong một thời gian dài, và đây là những điều mà tôi phát hiện ra là điều cần phải có đối với bất kỳ nhà phát triển Flagship nào, về tổng thể nó sẽ khiến bạn trở thành một nhà phát triển Flagship giỏi trong thời gian dài. 1. State management architecture Đây là một trong những chủ đề quan trọng nhất trong cộng đồng thiết bị rung, nó khá quan trọng nếu bạn muốn duy trì một dự án rung kích thước trung bình hoặc lớn. Nó sẽ giúp tạo một dự án suôn sẻ và thêm các tính năng mới một cách hoàn hảo.  2. Testing Đây là một chủ đề duy nhất mà tôi không hiểu tại sao nó lại quan trọng trước đó trong sự nghiệp của tôi, nhưng khi tôi tiến lên trong sự nghiệp của mình và có kinh nghiệm với nhiều dự án và vấn đề xảy ra trong môi trường sản xuất. Tôi đã nhận ra một cách khó khăn, tại sao điều này lại quan trọng như vậy. Nếu bạn vẫn muốn có thêm lý do để cân nhắc thử...

Thiết kế giao diện với DotNetBar (Phần 1)

Đây là phiên bản DotNetBar hỗ trợ C# và Visual Basic https://www.dropbox.com/s/wx80jpvgnlrmtux/DotNetBar.rar  , phiên bản này hỗ trợ giao diện Metro cực kỳ “dễ thương” Các bạn load về và cài đặt, khi cài đặt xong sẽ có source code mẫu của tất cả các control. Để sử dụng được các control của DotNetBar các bạn nhớ add item vào controls box. Thiết kế giao diện với DotNetBar, giao diện sẽ rất đẹp. Link các video hướng dẫn chi tiết cách sử dụng và coding: http://www.devcomponents.com/dotnetbar/movies.aspx Hiện tại DotNetBar có rất nhiều công cụ cực mạnh, trong đó có 3 công cụ dưới đây: DotNetBar for Windows Forms Requires with Visual Studio 2003, 2005, 2008, 2010 or 2012.   DotNetBar for WPF Requires with Visual Studio 2010 or 2012 and Windows Presentation Foundation.   DotNetBar for Silverlight Requires with Visual Studio 2010 or 2012 and Silverlight. Dưới đây là một số hình ảnh về các control trong DotnetBar.   Metro User Interface  controls with Metro Tiles, toolba...

Announcing Flutter 2

  Phụ lục: Flutter on the web Flutter 2 on desktops, foldables, and embedded devices The growing Flutter ecosystem Dart: The secret sauce behind Flutter Flutter 2: Available now Hôm nay, chúng tôi sẽ công bố Flutter 2: một bản nâng cấp lớn cho Flutter cho phép các nhà phát triển tạo các ứng dụng đẹp, nhanh chóng và di động cho bất kỳ nền tảng nào. Với Flutter 2, bạn có thể sử dụng cùng một cơ sở mã để gửi các ứng dụng gốc cho năm hệ điều hành: IOS, Android, Windows, macOS và Linux; cũng như trải nghiệm web nhắm mục tiêu các trình duyệt như Chrome, Firefox, Safari hoặc Edge. Flutter thậm chí có thể được nhúng vào ô tô, TV và thiết bị gia dụng thông minh, mang đến trải nghiệm di động và lan tỏa nhất cho thế giới điện toán xung quanh. Mục tiêu của chúng tôi là thay đổi cơ bản cách các nhà phát triển nghĩ về việc xây dựng ứng dụng, bắt đầu không phải với nền tảng bạn đang nhắm mục tiêu mà là với trải nghiệm bạn muốn tạo. Flutter cho phép bạn tạo ra những trải nghiệm tuyệt đẹp trong đó ...