Trang chủ Lập trình Flutter Flutter là gì? Google UI Toolkit ngon lành cho Mobile App năm...

Flutter là gì? Google UI Toolkit ngon lành cho Mobile App năm 2021

6
0
Quảng cáo

Ngày nay lập trình viên làm việc với mobile thật hết sức thú vị và công việc lập trình càng được giản lược đi rất nhiều nhờ vào những công cụ & framework mạnh mẽ như: Ionic, React Native và Flutter.

Thật vậy, Google cũng không chịu kém cạnh khi độ phủ sóng của React Native ngày càng lan rộng. Điều đó thật khó chịu, nên giờ đây anh Gồ quyết định cho ra đời 1 thứ công nghệ có thể làm thay đổi cả thế giới. Và đó chính là Flutter. Lập trình Cross Platform đang ngày càng trở nên phổ biến. Sau Ionic là tới React Native (2015) giúp cho lập trình viên chúng ta có nhiều sự lựa chọn để làm mobile app. Nhưng như vậy đã là đủ? Khi mà gã khổng lồ Google sau nhiều năm tháng nghe ngóng đã không thể ngồi im mãi được nữa, đã cho ra đời một framework thông minh nữa để chúng ta không cần phải băn khoan nhiều khi lựa chọn công nghệ làm mobile app.

Flutter Google UI Toolkit
Flutter Google UI Toolkit

Sự dịch chuyển công nghệ như một xu hướng tất yếu của thế giới CNTT. UberEats, Discord và Facebook đã chuyển sang React Native mà không hề ngần ngại. Chứng tỏ sức ảnh hưởng của React Native thật sự khủng khiếp. Chính thế việc Flutter ra đời và có chỗ đứng cho riêng mình là minh chứng cho một công nghệ mạnh mẽ & hữu dụng cho mọi lập trình viên có thể sử dụng. Nào bây giờ chúng ta sẽ xem xem Flutter có gì mà khủng khiếp.

1. Tổng quan về Flutter

Google giới thiệu Flutter như là một “người mới” trong ngành công nghiệp mobile app. Nó chính xác là Google’s UI toolkit (bộ công cụ giao diện) dành cho các lập trình viên có thể xây dựng các ứng dụng mobile một cách nhanh gọn lẹ, bảo đảm các tiêu chí: đẹp, native complied applications (biên dịch thành những ứng dụng nguyên bản) dành cho các nền tảng hay thiết bị như: mobile, máy tính để bàn hoặc trình duyệt website mà chỉ cần chúng ta viết 1 lần duy nhất rồi chạy tất. Rõ ràng như vậy sẽ nhanh hơn và tiện lợi hơn cho lập trình viên, tha hồ mà kiếm tiền rồi.

3 đặc tính nổi bật của Flutter:

Fast Development: Làm cho app của bạn trở nên sống động hơn chỉ trong vài mili giây thôi với tính năng Stateful Hot Reload. Và chỉ cần vài phút để làm app native với bộ widget đầy đủ + mạnh mẽ.

Expressive and Flexible UI: Cung cấp một cách nhanh chóng nhiều tính năng với trọng tâm là trải nghiệm của người dùng cuối. Mô hình phân lớp cho phép chỉnh sửa mạnh mẽ tạo kết quả nhanh chóng.

Native Performance: Những Widget của Flutter kết hợp tất cả các nền tảng khác nhau như scrolling, navigation, icons and fonts, đồng thời mã Flutter của bạn sẽ được biên dịch thành mã máy ARM gốc bằng trình biên dịch gốc của Dart.

Và tóm cái váy lại có 5 đặc điểm sau về Flutter:

  • Dart là ngôn ngữ thuần OOP, nó được sử dụng để xây dựng các ứng dụng web, server, máy tính để bàn và thiết bị di động.
  • Các IDE được khuyến nghị với Flutter là Android Studio hoặc Intellij Idea.
  • Flutter có cầu nối là Dart, kích thước ứng dụng lớn hơn, nhưng nó hoạt động nhanh hơn nhiều. Không giống như React Native với cầu nối là Javascript.
  • React Native và Flutter chia sẻ các mô hình tương tự như trình xử lý sự kiện và mở rộng lớp.
  • Animation và trải nghiệm cài đặt của Flutter thực sự tốt và mượt mà tương ứng.

Ok, trên đây là những gì thú vị về Flutter. Điều quan trọng là chúng ta cảm giác như thế nào. Việc lựa chọn một công nghệ để theo đuổi lâu dài không quá xa lạ nhưng với sự phát triển của ngành công nghiệp Mobile app mạnh mẽ như ngày nay thì những công nghệ cho phép chúng ta tạo được app nhanh gọn mà vẫn mạnh mẽ mượt mà thì các bạn nên trọng Flutter hoặc React Native. Ngày trước mình đã chọn Ionic để làm việc thay thế cho Objective-C, đến nay vẫn dùng Ionic miễn sao nó vẫn phục vụ được công việc yêu cầu của mình. Vì vậy theo mình nghĩ rằng việc sử dụng ngôn ngữ nào không quan trọng, quan trọng là ứng dụng có dễ sử dụng và nâng cấp hay không.

2. Ưu nhược điểm

Rõ ràng là một ngôn ngữ nào cũng có những ưu nhược điểm của nó. Dưới đây là những phân tích đánh giá và Flutter của những LTV thế giới.

A. Ưu điểm:

  • Ngôn ngữ Dart: nó khá dài, nhưng những người quen viết bằng Java / C# sẽ hài lòng với Dart.
  • Ít phải viết các config khi tạo project mới theo cách thủ công, ngược lại với React Native.
  • Chỉ cần tải về Flutter từ git, chạy “flutter doctor”, và nó sẽ cho bạn biết những loại vấn đề bạn có thể có trong hệ thống. Sau đó, tạo một project từ Android Studio hoặc bất kỳ IDE nào sau khi cài đặt Flutter Plug-in sơ bộ và start project. Ngoài ra nó còn có Hot-reload giống như trong React-Native.
  • Hỗ trợ tuyệt vời cho IDE (Android Studio, IDE IntelliJ, VSCode)
  • Trình điều hướng tích hợp sẵn. Sau khi tạo ra một ứng dụng trên Flutter, bạn có thể thấy nó có Navigator được xây dựng sẵn. Bạn có thể tạo một route mới mà không cần kết nối bất kỳ thứ gì (không giống như trong RN, nơi bạn cần kết nối bất kỳ package điều hướng gốc nào vv);
  • Giải pháp quản lý dữ liệu được tạo sẵn, ví dụ trong Flutter này là “Mọi thứ đều có một Widget” cho nó. Có một StatefulWidget đặc biệt, với sự giúp đỡ của nó mà chúng ta có thể quản lý trạng thái widget và thay đổi nó một cách năng động.

B. Nhược điểm:

  • Có một rào cản lớn cho những người chỉ học JS, hoặc đến từ RN. Do thực tế là Dart được sử dụng với sự thừa kế, đa hình của nó và tất cả các thứ về OOP.
  • Không có JSX mà tất cả chúng ta đã quen khi làm RN. Nhìn vào tệp Dart trong đó không có phân chia thành template, styling và data, nó trở nên khó chịu.
  • Styling là một nhược điểm. Thực tế là không có sự tách biệt thành Styles, templates và controller, có một vấn đề khi mô tả một thành phần thì chúng ta cũng cần mô tả các styles cùng một lúc.
  • Animation còn khó khăn hơn. Mặc dù nó có một animation tốt, nhưng nó sẽ khó hơn khi tạo hiệu ứng động, không giống như trong RN.
  • Tối ưu hóa. Trong Fluter, chỉ có thừa kế widget với các điều kiện có thể thay đổi (trạng thái) và không thể thay đổi (không trạng thái). Trong khi ở React-Native chúng ta có thể quản lý vòng đời. Ngoài ra, một nhược điểm lớn là thiếu các công cụ để lưu trạng thái của ứng dụng, vấn đề này có thể, tuy nhiên, được giải quyết bằng cách tuần tự hóa trạng thái hiện tại.

Và rồi chúng ta lại so sánh.

FlutterReact Native
Khả năng dùng lại codeFlutter cho phép overwriting code. Nếu bạn có kế hoạch cho việc sử dụng lại code thì Flutter là tùy chọn tốt nhất để có thể tối ưu được việc lựa sử dụng lại code.React Native cho phép bạn sử dụng lại code, nhưng điều này lại bị giới hạn trong một vài components cơ bản. Để có thể định nghĩa các style cho nền tảng React Native sẽ mất khá nhiều thời gian.
Các thư viện Third PartyCó nhiều các third-party packages đang được sử dụng và đang ngày càng được phát triển, và chúng thực sự rất hữu dụng.Từ khi React Native trở lên phổ biến, đã có rất nhiều các third-party packages được phát triển và được sử dụng rất nhiều trong ứng dụng, chúng có thể được thêm bớt một cách linh động trong ứng dụng của bạn.
Độ phổ biếnVới khoảng 30k Github stars, Flutter đã trở thành trends trong việc phát triển. Như Google đã giới thiệu về framework này. Nó chắc chắn muốn trở thành một nền tảng phổ biến trong sự lựa chọn của các developer.Với 65k Github stars, React Native có lượng developer sử dụng đang nhiều hơn bởi vì lượng developer sử dụng JavaScript rất dễ dàng để sử dụng với các thư viện của React.
Cộng đồng phát triểnTừ khi Flutter mới được giới thiệu, đã có một lượng lớn các bài viết hướng dẫn được đưa lên online, trong đó có rất nhiều các tài nguyên hữu ích để có thể bắt đầu viết ứng dụng đầu tiên trên mobile app.React Native đã được phổ biến từ lâu, vì thế cho nên nó cũng có rất nhiều các cộng đồng để hỗ trợ online. Những kỹ năng của các lập trình viên có kinh nghiệm trong JavaScript chắc chắn sẽ đưa ra giải pháp cho bất kỳ vấn đề nào trong quá trình phát triển của bạn.
bảng so sánh nhỏ giữa Flutter và React Native

Với những gì chúng ta hiểu và nắm bắt, React Native là một công cụ thật mạnh để xây dựng những dự án Mobile app. Song song với nó là Flutter đối với những ai yêu thích và quen làm việc với phong cách của Google thì nên chọn. Mình không nghiêng về bên nào, cả 2 đều là công cụ mới tinh đối với mình để làm việc.

Và mình chọn Flutter. Các bài tiếp theo, mình sẽ hướng dẫn các bạn cài đặt và viết những ứng dụng cụ thể cơ bản đầu tiên. Hãy phản hồi và đóng góp thêm kiến thức để cùng nhau xây dựng kênh Flutter VN này càng thêm mạnh nhé các bạn.

Chúc các bạn làm việc vui vẻ!

Quảng cáo