Xin chào, tôi là Thái Sơn, là một học viên lập trình flutter của TechMaster. Vì tôi đã đặt tiêu đề như thế nên tôi nghĩ mình cần giải thích thêm về nó. Về mặt kỹ thuật, tôi đã nghĩ Flutter là một framework đa nền tảng.

Kể từ khi Flutter 2.0 phát hành, tôi bắt đầu cảm thấy sự cường điệu quá mức. Đừng hiểu lầm, tôi thực sự rất thích Flutter và tôi sẽ mãi là người ủng hộ nó.

Tôi sử dụng Flutter cho ứng dụng iOS và Android trong công việc hàng ngày của mình. Mỗi ngày tôi đều nhận thấy những ưu và nhược điểm của Flutter vì ứng dụng mà tôi làm việc trước đây được viết bằng Kotlin và Swift với các đặc quyền như: scan/page recognition, pin/biometric app authentication, notifications, firebase statistics. Đó là lý do tại sao tôi cảm thấy mình có thể nói vài lời về tình hình hiện tại của chúng ta (những người sử dụng Flutter).

The six

Một trong những điều quan trọng trong Flutter Engage năm nay là khả năng xây dựng ứng dụng của bạn cho một trong sáu nền tảng: iOS, Android, Mac, Windows, Linux và web. Đó là tin tuyệt vời! Tuy nhiên…

Bạn có thể triển khai ứng dụng của mình trên cả 6 nền tảng, nhưng tôi không định làm như vậy. Về cơ bản, bạn nên sử dụng các pattern thiết kế khác nhau tùy thuộc vào các nền tảng khác nhau. Tôi không thể tưởng tượng ra việc triển khai ứng dụng của mình trên một nền tảng khác. Đó không phải là những gì người dùng mong đợi trên các thiết bị lớn hơn. Thông thường, những gì hoạt động trên thiết bị di động sẽ không hoạt động trên desktop và ngược lại.

Đừng nghĩ rằng bạn sẽ tạo một ứng dụng và triển khai nó ở khắp mọi nơi.

Trong công ty của tôi, chúng tôi đang xây dựng các ứng dụng tập trung vào dữ liệu người dùng. Điều này cho thấy nhu cầu tạo các cuộc khảo sát tùy chỉnh và nâng cao và chúng tôi không muốn viết các Widget mới mỗi lần thêm các câu hỏi mới. Phương pháp của chúng tôi - một mô-đun viết chứa mọi logic khảo sát có thể có - cho phép chúng tôi sử dụng nó trong nhiều dự án mà không cần viết lại từ đầu.

Ý tôi muốn nói thông qua ví dụ này là, khi bạn xây dựng một ứng dụng, hãy nghĩ về mục đích mà ứng dụng hoặc doanh nghiệp của bạn nhắm đến. business logic ẩn sâu bên trong là gì?

Tại sao tôi nghĩ bạn nên viết nhiều ứng dụng?

Tôi đã làm việc trên một số ứng dụng cấp doanh nghiệp. Theo kinh nghiệm của tôi, cần phải có một quy trình làm việc rõ ràng trên từng phần của hệ thống. Backend, front-end, dev-ops, v.v. Hãy tưởng tượng rằng ứng dụng của bạn, được xây dựng cho mọi nền tảng.

Do nhu cầu cao, bạn cần thuê một nhóm các lập trình viên. Không thể kết hợp tất cả các nền tảng vào một ứng dụng. Bạn có thể tưởng tượng làm thế nào hơn 10 lập trình viên (trong công ty nhỏ) đang làm việc trên cùng một code base nhưng trên các nền tảng khác nhau? Đó là một cơn ác mộng cho việc quản lý. Một nhóm dev làm việc trên desktop mâu thuẫn với mobile team.

Thứ hai, kích thước ứng dụng ngày càng lớn với các package đôi khi không cần thiết cho mọi nền tảng. Trong lần phát hành Flutter 2.0 đầu tiên, tôi đã gặp sự cố với chained dependencies vì không phải tất cả các package đều được cập nhật để hỗ trợ null-safety hoặc có dependencies lẫn nhau.

Cuối cùng, tại sao Flutter không phải là một framework đa nền tảng?

Sau khi đọc bài viết này, bạn có thể biết tại sao tôi không coi Flutter là một framework đa nền tảng. Đơn giản vì nó là công cụ cung cấp cho chúng ta mọi thứ mà chúng ta cần để xây dựng ứng dụng cho từng nền tảng. Nhưng theo tôi là đó không nên là một ứng dụng duy nhất, giống như một nhóm ứng dụng được thúc đẩy bởi cùng một logic kinh doanh.

Một điều khác là, khi chúng tôi viết một ứng dụng Flutter, chúng tôi sẽ không vượt qua bất kỳ nền tảng nào 😉 Chúng tôi đã nghĩ nếu chúng tôi viết nó bằng Xamarin hoặc bất kỳ công cụ nào khác có thể dịch code của nó sang các native element… nhưng chúng tôi không làm điều đó. Chúng tôi có một bức tranh trống để chúng tôi tự vẽ mọi thứ.

Nếu tôi phải so sánh Flutter với một thứ khác thì đó sẽ là một công cụ trò chơi, như Unity. Chúng tôi không viết các trò chơi dành riêng cho Windows hoặc Mac. Chúng tôi đang viết trong Unity và sau đó xuất nó sang một nền tảng cụ thể. Viết trong Unity đã trở thành một điều của riêng nó.

Nếu bạn đang đọc dòng này: Cảm ơn bạn! Bạn thật là tuyệt vời! Ở cuối bài viết này, tôi muốn nói rằng đây là suy nghĩ của riêng tôi về chủ đề đa nền tảng và bạn có thể suy nghĩ khác.


Các bạn có thể bắt đầu với Lập trình Flutter, làm quen với Dart từ khóa học Lập trình Di động đa nền tảng Fflutter tại Techmaster như cái cách mà tôi lựa chọn và đã học nhé.