Flutter 1.3 - Flutter & Dart biên dịch sang Native app như thế nào ?

 1. Cách Flutter/Dart "biến hình" thành Native App ?


Flutter API cung cấp các Uility, widgets 
Dart Code
Code, widgets của bạn 

Compile => Flutter SDK sẽ biên dịch đống code trên thành code của app native (iOS, Android) => tối ưu hiệu năng,...


2. Flutter không biên dịch thẳng sang code native mà có custom lại.


Không giống React Native, Flutter không sử dụng "nền tảng nguyên thủy" của native app.

Khi biên dịch sang native app, Flutter SDK không biên dịch thằng sang code native mà custom lại để giao diện mượt mà, linh hoạt hơn.



3. So sánh Flutter và React Native


Flutter: Ưu điểm

– Mạnh về animation, performance app rất cao.

– Giao tiếp gần như trực tiếp với native

– Static language nhưng với syntax hiện đại, compiler linh động giữa AOT (for archive, build prod) và JIT (for development, hot reload)

– Có thể chạy được giả lập mobile ngay trên web, tiện cho development. Các metric measure performance được hỗ trợ sẵn giúp developer kiểm soát tốt performance của app.

– Có thể dùng để build các bundle/framework gắn và app native để tăng performance.


Flutter: Nhược điểm

– Bộ render UI được team author gần như viết lại, không liên quan tới UI có sẵn của Framework native, dẫn đến memory sử dụng khá nhiều.

– Phải học thêm ngôn ngữ DART, bloc pattern, DART Streaming

– Dù đã release 2.2 chính thức, tuy nhiên còn khá mới.


React Native : sử dụng "cầu" để biên dịch thằng sang code native.

React Native: Ưu điểm
– Thiên về development/hotfix nhanh (hot reload, bundle injection)
– Sử dụng JS (quen thuộc với nhiều developer) và có thể share business logic codebase với frontend (js).
– Phát triển bởi Facebook, họ dùng cho product của họ hàng ngày nên developer hưởng lợi khá nhiều từ đây.
– Hiện tại đã rất nhiều thư viện, gần như đã rất đầy đủ cho các nhu cầu app thông dụng.

React Native: Nhược điểm
– Giao tiếp với native thông qua các bridge, dễ bị bottleneck nếu không được kiểm soát tốt.
– Dùng JS nên mang theo các đặc điểm của JS: rất dễ làm nhưng cũng dễ sai, dẫn tới khó maintain về sau.
– HIệu năng animation là điểm yếu của RN, muốn làm tốt phải làm từ native, tầng js chỉ call vào, setup views. Tuy nhiên với các interactive animation thì rất đau khổ.
– Không thích hợp cho các app cần năng lực tính toán cao (hash, crypto, etc).

Nhận xét

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

Flutter 4.5 - Custom theme, font, image

Flutter 1.2 - Flutter Architecture

Flutter 2.5 - First App | Building a Widget Tree