Flutter Developer là gì

Hơn 3 năm trước mình giới thiệu React native [Xem bài: React Native là tương lai của lập trình di động], với sự tin tưởng vào tương lai của React Native. Nhưng đến thời điểm này, Flutter, một cái tên mới sẽ hứa hẹn kỷ nguyên mới bắt đầu. Bài viết này sẽ có cái nhìn tổng quan và nhận định về tương lai của Flutter, toàn bộ về ưu và khuyết điểm của nền tảng này.

Như mọi khi, để xác định được xu hướng, mình dùng Google Trends, và so sánh 2 từ khoá “React Native” và “Flutter”:

Flutter là gì

Flutter là nền tảng phát triển ứng dụng đa nền tảng cho iOS và Android do Google phát triển. Flutter sử dụng ngôn ngữ DART cũng do Google phát triển và flutter cũng đã được sử dụng để tạo ra các ứng dụng native cho Google.

Ngôn ngữ DART

Ngôn ngữ DART là ngôn ngữ thuần hướng đối tượng được Google giới thiệu từ năm 2011, với mục đích cung cấp sự lựa chọn hiện đại hơn nhưng không thay thế Javascript. Tối ưu cho client, nhất là ứng dụng đa nền tảng.

Từng giữ vị trí Top 1 cho bình chọn ngôn ngữ không nên học năm 2018 theo Codementor:

//www.codementor.io/blog/worst-languages-to-learn-3phycr98zk

Đưa ra ví dụ để có thể nói mọi thứ đều có thể trở thành hiện tượng “vật đổi sao dời”, từ một ngôn ngữ không nên học vào 2018 có thể trở thành ngôn ngữ được sử dụng nhiều trong năm 2019 này, và nhờ Flutter mà có khả năng tiếp tục phát triển vào 2020.

Ngôn ngữ DART được hỗ trợ khá tốt ở Visual Studio Code, và trong Android Studio.

Flutter có thể làm được gì

Flutter: Ưu điểm

  • Mạnh về hiệu ứng, hiệu suất ứng dụng rất cao.
  • Giao tiếp gần như trực tiếp với hệ thống
  • Ngôn ngữ kiểu tĩnh nhưng với cú pháp hiện đại [tương tự JS, Python, Java], compiler linh động khi dùng AOT [cho sản phẩm cuối] và JIT [cho quá trình phát triển với hot reload]
  • Có thể chạy được giả lập mobile ngay trên web, tiện cho việc phát triển. Các bộ đo lường chỉ số hiệu suất được hỗ trợ sẵn giúp lập trình viên kiểm soát tốt hiệu suất của ứng dụng.
    – Có thể dùng để xây dựng các nền tảng gắn vào ứng dụng native để tăng hiệu suất.

Flutter: Nhược điểm

  • Bộ render UI được nhóm phát triển 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. Hơn nữa, các UI không đi chung với OS, mà được phát triển riêng, nghĩa là cùng 1 phiên bản Flutter khi tạo ra ứng dụng cho iOS thì iOS 8.x -> 12.x đều y chang nhau, tương tự như với Android. Nhưng UI của Android thì tất nhiên khác với iOS.
  • Phải học thêm ngôn ngữ DART: lập trình viên biết về DART không nhiều, cũng có rủi ro là học xong DART sẽ dính liền luôn với DART ở mảng phát triển ứng dụng mobile. Chứ không uyển chuyển như JS hay Python có thể nhảy qua lại giữa front, back hay AI…
  • Mô hình dữ liệu mới: bloc pattern, DART Streaming; nếu đã quen với Redux khi làm phát triển React Native, bạn sẽ mất thời gian để học thêm mô hình dữ liệu trong Flutter, mặc dù nó không khó.
  • Là con cưng của Google, tuy nhiên hãng dính nhìu phốt với thói quen “quăng con giữa chợ” nên cũng cần cân nhắc. Tuy nhiên, mình nhận thấy Flutter rất tốt, tốt hơn nhiều so với những cái mà Google từng làm ra như Angular.

Native đúng nghĩa

Bộ engine để render UI hoàn toàn thuộc Flutter, vì vậy bạn có thể tạo ra bất kỳ hiệu ứng và đồ hoạ nào cho cả 2 nền tảng iOS và Android. Bạn có thể tưởng tượng Flutter như 1 engine game, có thể điểu chỉnh đến từng pixel và phủ trên đó là hệ thống Widget đa dạng, phong phú.

Hot Reload

Khi làm việc với những thứ liên quan đến UI thì Hot Reload thật khiến cho lập trình viên dễ chịu, càng tuyệt hơn khi Flutter cung cấp khả năng ghi nhớ state của ứng dụng. Hot Reload cung cấp cho bạn trải nghiệm tuyệt vời khi lập trình Flutter, so với React Native thì điểm này Flutter hơn.

DevTools tuy mới ở giai đoạn beta nhưng độ hoàn thiện cũng rất cao, so với DevTools của React/React Native thì DevTools của Flutter tốt hơn.

Nâng cấp dễ dàng

Mặc dù cách cài đặt ban đầu của Flutter là tải về tập tin nén, nhưng khi cập nhật lên phiên bản mới thì chỉ cần dòng lệnh là đủ, và khá dễ dàng. Ứng dụng sau khi nâng cấp phiên bản Flutter chạy không gặp trở ngại gì cả. Đây là một điểm cộng khá lớn khi xét về độ trưởng thành. Khi sử dụng React Native, các phiên bản từ 0.25, 0.48 có những thay đổi phải sửa bằng tay mới chạy, rất khó chịu.

Những điều chưa làm được của Flutter

Cập nhật lên kho ứng dụng không dễ dàng

Phải cập nhật ứng dụng thông qua trung tâm ứng dụng như Play Store hay App Store. Với React Native, nếu bạn chỉ chỉnh sửa phần sử dụng javascript thì bạn không cần phải build phiên bản mới để cập nhật ứng dụng. Điều này là không thể với Flutter vì Flutter build ra ứng dụng native, và code được biên dịch AOT.

Thiếu JSX

Gọi là thiếu thì cũng không chính xác, nhưng do quen với JSX khá thuận tiện của React Native. Mình thấy có khi JSX trực quan và dễ hiểu layout hơn của Flutter. Yêu cầu về JSX đã được gởi tới nhóm phát triển, họ không từ chối, tuy nhiên cũng không nên mong đợi điều này vì có lẽ nó không phù hợp lắm với DART.

Import chưa rõ ràng

Có chút khó khăn khi code, không biết 1 class, function được import từ package nào. Nếu sử dụng IDE hoặc VSCode thì có thể hover lên class để xác định, tuy nhiên đối với các Text Editor khác hoặc đọc bài viết thì khó xác định được class thuộc package nào.

Fullstack Station Tips

Vừa native vừa hot reload, cho trải nghiệm tốt cả giai đoạn phát triển và hiệu suất ứng dụng tốt. Đây quả là 1 điều tuyệt vời! Mình thật sự ấn tượng với Flutter, và gần như muốn chắc chắn sẽ sử dụng Flutter cho dự án mới. Tuy nhiên, ngôn ngữ Dart là một rào cản khá lớn, mình nghĩ phải cân nhắc rất kỹ cho định hướng nghề nghiệp. Nếu bạn muốn trở thành lập trình viên ứng dụng di động, hãy sử dụng Flutter từ hôm nay.

iOS và Android đã phát triển đến mức bão hoà, việc có chức năng, tính năng đột phá thật sự rất khó. Vì vậy, tương lai của ứng dụng đa nền tảng là hiển nhiên. Trong bài viết này mình chưa đề cập nhiều đến việc so sánh giữa Flutter và React Native, nhưng kinh nghiệm mình cho biết Flutter sẽ thắng trong thời gian tới, hãy chờ xem nhé.

Tham khảo

//developers.googleblog.com/2019/05/Flutter-io19.html

//medium.com/flutter-community/flutter-from-mobile-to-desktop-93635e8de64e

//medium.com/asos-techblog/flutter-vs-react-native-for-ios-android-app-development-c41b4e038db9

//medium.com/airbnb-engineering/sunsetting-react-native-1868ba28e30a

//hackernoon.com/react-native-vs-flutter-which-is-preferred-for-you-bba108f808

Flutter đang là một trong những lựa chọn tiêu biểu của nhiều lập trình viên, doanh nghiệp khi có dự định thiết kế ứng dụng, đặc biệt là các ứng dụng di động. Nhưng đây có phải là lựa chọn tốt thay vì React Native? Để có câu trả lời, hãy cùng đi tìm hiểu Flutter là gì? Các đặc điểm, sự khác nhau của Flutter và React Native như thế nào? Cùng chúng tôi tìm hiểu ngay trong bài viết dưới đây nhé

Flutter là gì?

Flutter là gì? Flutter được biết đến là một nền tảng phát triển ứng dụng di động cho iOS và Android, được phát triển bởi Google nhằm tạo ra các ứng dụng gốc Native app cho Google thuận tiện hơn.

Flutter là gì

Flutter sở hữu cho mình nhiều tính năng thú vị như:

  • Là một react framework
  • Sử dụng ngôn ngữ lập trình Dart khá đơn giản và dễ đọc.
  • Giao diện đẹp mắt, linh động
  • Ứng dụng được phát triển nhanh, hỗ trợ nhiều widget khác nhau.
  • Hiệu năng sử dụng cao.
  • Khả năng thể hiện cùng UI trên nhiều nền tảng khác nhau.

Có thể nói, Flutter là một bộ công cụ phát triển phần mềm toàn diện, hoàn chỉnh với đủ các công cụ và tính năng cần thiết. Flutter cho phép nhà phát triển có thể xây dựng, triển khai các ứng dụng được biên dịch trực quan, hấp dẫn hơn dành cho các thiết bị di động [Android và iOS], web và cả máy tính để bàn. Tất cả đều được sử dụng một cơ sở mã duy nhất.

Công cụ này sở hữu 2 thành phần chính:

  • SDK [Software Development Kit]: là bộ sưu tập các công cụ giúp phát triển ứng dụng. Nhờ có công cụ này, bạn có thể biên dịch mã của bạn thành mã gốc dành cho iOS và Android thuận tiện hơn.
  • Framework [UI Library based on widgets]: là tập hợp các thành phần giao diện người dùng Ui, có thể tái sử dụng và giúp cá nhân hóa theo nhu cầu của người dùng.

Đặc điểm của Flutter

Khi nắm được khái niệm Flutter là gì, nhiều người nói rằng Flutter sẽ là công cụ đáng thử bởi đây là một Framework được thiết kế dựa trên ngôn ngữ lập trình Dart với nhiều tính năng hấp dẫn. Giao diện người dùng mang đặc trưng riêng, có cơ chế kết xuất trên nền tảng iOS và Android. Không chỉ vậy, các ứng dụng có thể được phát triển bằng IDE hay IntelliJ gần giống với Android Studio.

Nếu những lý do trên khiến bạn chưa thực sự thấy điểm độc đáo của Flutter, vậy hãy cùng khám phá thêm các đặc điểm của Flutter tiếp theo sau đây.

Ưu điểm nổi bật của Flutter

Nhắc đến ưu điểm của Flutter thì không thể bỏ qua 3 điểm nổi bật của công cụ này:

Phát triển nhanh [Fast Development]

Có thể hiểu đơn giản đó là tính năng tải lại nóng [hot reload] hoạt động trong Milliseconds nhằm hiển thị giao diện sắp tới cho bạn biết. Sử dụng Widget và xây dựng giao diện trong vài phút.

Không chỉ vậy, tính năng Hot Reload còn cho phép Fix Bud giúp tiết kiệm thời gian mà không cần phải thông qua máy Android hay iOS hay máy ảo nào khác.

Giao diện người dùng linh hoạt [Expressive and Flexible UI]

Flutter được xây dựng giao diện từ nhiều thành phần khác nhau. Điều này khiến cho giao diện của Flutter trở nên đẹp mắt và có phong cách chuẩn Material Design cùng Cupertino, giúp hỗ trợ các Smooth Scrolling hay các APIs chuyển động tốt hơn.

Hiệu suất gốc [Native Performance]

Trên Flutter, các Widget kết hợp những tính năng tuyệt vời của các nền tảng Font, Icon, Navigation, Scrolling và cung cấp hiệu năng tốt nhất tới các ứng dụng trên nền tảng Android và iOS.

Hạn chế của Flutter

Bên cạnh những ưu điểm nổi bật đáp ứng mong đợi của nhiều lập trình viên thì Flutter cũng còn tồn động những hạn chế nhất định.

Kết xuất giao diện người dùng

Render UI được phát triển gần như viết lại, không liên quan tới giao diện Framework Native có sẵn, khiến cho Memory sử dụng khá nhiều. Các giao diện người dùng UI không đi chung với iOS mà được phát triển riêng biệt. Điều này có nghĩa trên cùng phiên bản Flutter khi tạo các ứng dụng trên iOS ở các đều khác nhau đều y chang nhau. Với Android cũng tương tự.

Học thêm ngôn ngữ Dart

Để sử dụng Flutter, người dùng phải học thêm ngôn ngữ Dart. Ngôn ngữ này cũng không được sử dụng phổ biến cho lắm tính tới thời điểm này. Bên cạnh đó, mô hình dữ liệu mới Block Pattern, Dart Streaming cũng khiến bạn tốn thời gian để học. Nhưng các kiến thức này không khó, bạn có thể làm quen với Redux khi phát triển React Native.

Ngoài ra, nhiều lập trình viên cũng cảm thấy khó khăn khi sử dụng Flutter vì phải cập nhật lên kho ứng dụng, thiếu JSX và Import chưa thực sự rõ ràng.

So sánh sự khác nhau của Flutter và React Native

Cùng với Flutter, React Native cũng là công nghệ thiết kế ứng dụng hot với ưu điểm ít tốn kinh phí và đem lại hiệu quả cao.

React Native là khung JavaScript, sử dụng thiết kế giống React, được tạo bởi Facebook và cho phép gửi các ứng dụng iOS và Android với một cơ sở mã duy nhất. Các thiết kế ứng dụng di động nổi bật của React Native được biết đến như Facebook, Instagram, Pinterest, Skype,…Vậy giữa Flutter và React Native thì cái nào tốt hơn, chúng có gì khác nhau? Hãy cùng đi so sánh 2 công cụ này nhằm lựa chọn cho mình một công nghệ phù hợp nhất cho ứng dụng của mình nhé.

Khả năng phát triển ứng dụng

Hot Reload

  • Theo quan điểm của các nhà lập trình, Flutter cung cấp phát triển ứng dụng có tính năng động và tốc độ hơn. Các nhà phát triển có thể thực hiện các thay đổi với codebase đang hoạt động và thấy chúng phản ánh ngay lập tức. Tính năng Hot Reload này chỉ mất vài giây để các thay đổi có thể hiển, sửa lỗi và thử nghiệm ý tưởng ngay lập tức.
  • Về cơ bản thì tính năng Hot Reload cũng React Native cũng tương tự Flutter. Nhưng ở React Native muốn cải thiện trải nghiệm tốt hơn, nhóm React Native phát triển phiên bản 0.61 với tính năng làm mới nhanh, thống nhất tải lại trực tiếp và update ngay, linh hoạt hơn với các lỗi so với các phiên bản trước.

Code

Ở cả Flutter và React Native, các nhà lập trình đều có thể viết app với một cơ sở mã cho cả 2 ứng dụng iOS và Android.

Môi trường phát triển

  • Flutter hoàn toàn chiếm ưu thế khi React Native khá lằng nhằng khi cài đặt môi trường phát triển. Nếu chưa lập trình bao giờ mà sử dụng React Native thì quả thực sẽ rất khó khăn..
  • Flutter cũng đơn giản hóa quá trình cài đặt, cung cấp công cụ hữu ích giúp kiểm tra lỗi hệ thống, có tên gọi là Flutter doctor.

Ngôn ngữ lập trình

Một yếu tố quyết định nên chọn sử dụng Flutter hay React Native đó là ngôn ngữ lập trình.

React Native sử dụng JavaScript. Mọt ngôn ngữ lập trình khá phổ biến và quen thuộc với các nhà phát triển.

Trong khi đó, Flutter lại sử dụng ngôn ngữ lập trình Dart, một ngôn ngữ chưa được nhiều người biết đến. Và thực tế thì bạn chỉ sử dụng được Dart để viết Flutter mà thôi. Trong khi đó, JavaScript lại dùng cho cả React Native và web nữa.

Nhưng đổ lại, Dart với những điểm mạnh riêng và nhiều người cũng tin rằng về mặt hiệu suất thì Flutter sẽ chiếm thế thượng phong.

Hiệu suất làm việc

Nói về hiệu suất thì Flutter có cách tiếp cận hoàn toàn khác so với React Native.

Theo Matt Long – CEO tại Groove Software Outsourcing company thì ứng dụng Flutter được biên dịch bằng C/C++ để nó gần với ngôn ngữ máy tính hơn và đem lại hiệu suất tốt hơn. Không chỉ UI được biên dịch mà toàn bộ đều được dịch. Flutter cũng không cần cầu nối mà nó có thể hoạt động nhanh hơn nhiều [animation với 60 khung hình/giây].

Trong khi đó, React Native bao gồm ngôn ngữ JS và các thành phần Native. Một ứng dụng xây qua React Native sẽ sử dụng JavaScript để tương tác với các native như camera, âm thanh, GPS,… thông qua Bridge. React Native không được biên dịch thành mã gốc và nó vẫn có lớp JS. Điều này khiến React Native kém hơn so với Flutter.

Tóm lại, các thành phần React Native khá cơ bản, bạn cần thêm bất cứ thứ gì sẽ cần nỗ lực đáng kể để tạo kiểu. Chỉ có số ít thành phần thích ứng với nên ftangr, trong khi hầu hết bạn sẽ cần phải sử dụng thành phần khác nhau cho cả iOS và Android. Trong khi đó, Flutter lại có sẵn mọi thức, các vật dụng dựa trên công nghệ sẵn có sẽ giúp bạn dễ dàng tùy chỉnh hơn. Hầu hết các phụ tùng cũng có thể thích ứng và bạn có thể dùng chung cho cả iOS và Android.

Nên lựa chọn Flutter hay React Native để thiết kế ứng dụng?

Nếu React Native nhà phát triển đang phải tập trung kiến trúc lại quy mô lớn, cải thiện nhằm hỗ trợ cả người dùng React Native và cộng đồng lớn hơn. Đây cũng là vị trí ổn định trên thị trường và đang đi vào quỹ đạo phát triển liên tục. Về tầm nhìn dài hạn React Native chắc chắn sẽ là một tín hiệu tương lai tươi sáng của công nghệ.

Bên cạnh đó thì Flutter đang dần thu hút được nhiều công ty. Flutter SDK cũng đang được Google cải tiến không ngừng. Code thiết kế app mobile bằng Flutter luôn hữu ích và thân thiện với các ứng dụng. Chúng ta có thể mong đợi Flutter sẽ sớm cho phép tạo ra không chỉ ứng dụng di động mà còn cả các ứng dụng web với nhiều chức năng chất lượng hơn trong tương lai. Quay trở lại về tiềm năng của Flutter, công nghệ này đã thu hút được ông lớn Alibaba. Trong tương lai, hứa hẹn đây sẽ là công cụ phát triển app mobile thông dụng.

Bài viết trên đã giúp bạn hiểu được Flutter là gì và đặt lên bàn cân so sánh giữa Flutter và React Native. Mỗi thứ đều có những ưu và nhược điểm riêng. Vì thế, không thể khẳng định chắc chắn là nên dùng Fluter hay React Native tốt hơn. Tùy vào từng tình hình cụ thể cũng như các đặc điểm riêng của 2 công nghệ mà bạn đưa ra lựa chọn phù hợp cho mục đích tạo ứng dụng của mình nhé.

  • Có thể bạn quan tâm: Tổng hợp nguồn tài liệu học React Native cho người mới

Video liên quan

Chủ Đề