Flutter là gì?
- Flutter là 1 framework open source được tạo ra bởi Google và được phát hành vào tháng 5 năm 2017. Với mục đích tạo ra một ứng dụng di động chất lượng cao và hiệu xuất cao với đa nền tảng – Android, iOS, ứng dụng web, ứng dụng desktop vì tất cả ứng dụng Flutter đều viết bằng một ngôn ngữ lập trình duy nhất.
- Framework này cung cấp một SDK đơn giản, mạnh mẽ, hiệu quả và rất dễ hiểu để viết ứng dụng di động với ngôn ngữ của chính Google – Dart.
- Framework còn có một tập hợp những phần tử UI (Buttons, text input, slider,v.v…) có thể tái sử dụng được mà bạn có thể cá nhân hóa mọi ứng dụng mà bạn muốn
- Với bài viết này chúng ta sẽ cùng nắm tay nhau bước qua các phần cơ bản của Framework Flutter, cách cài đặt Flutter, cách cài trên VSCode, phát triển ứng dụng Flutter và kiến trúc của framework Flutter.
- Để có thể phát triển ứng dụng Flutter, bạn sẽ sử dụng ngôn ngữ lập trình tên là Dart. Ngôn ngữ này được tạo ra bởi Google vào tháng 10 2011, nhưng nó đã được cải tiến rất nhiều sau cả thập kỷ phát triển.
- Dart tập trung rất nhiều vào mảng phát triển Front-end, và bạn có thể sử dụng nó để tạo ứng dụng di động hay thậm chí cả ứng dụng Web.
- Nếu bạn biết một ít về lập trình thì Dart là một ngôn ngữ hướng đối tượng và nó có thể được so sánh các cú pháp khá giống với Javascript.
Các bài viết liên quan:
Tại sao lại là Flutter?
- Kể từ khi Flutter trở nên nổi tiếng, các dạng câu hỏi như thế này đã được đưa ra. Trước khi quyết định xây dựng một ứng dụng di động Flutter, mọi người luôn muốn biết rằng nó hỗ trợ phát triển cho loại nào và không cho loại nào. Flutter không phải là lựa chọn cho bạn nếu bạn đang phát triển:
- Các ứng dụng web được phát triển nhanh và tức thì – Các loại ứng dụng web nhỏ.
- Các ứng dụng cần thư viện riêng không phổ biến – Flutter là còn mới và nó không có tất cả các thư viện riêng trong kho lưu trữ của nó, vì vậy nếu bất kỳ thư viện gốc không phổ biến nào được yêu cầu bởi một ứng dụng của bạn, nó có thể làm phức tạp quá trình phát triển ứng dụng của bạn. Trong trường hợp đó, các nhà phát triển sẽ phải thêm các custom và mà chắc chắn sẽ mất thời gian.
- Các ứng dụng giao tiếp với phần cứng bluetooth – Tính năng này có thể được xây dựng riêng cho cả Android và iOS và sau đó được thêm vào ứng dụng Flutter. Tuy nhiên, điều này có thể tốn thời gian lập trình.
- Nhưng nó rất tuyệt vời cho bạn để lập trình một ứng dụng nếu bạn hướng đến những thứ sau đây:
- Dễ học và sử dụng
- Flutter là một framework hiện đại, và bạn tất nhiên sẽ cảm nhận được điều đó qua Material Design của Google và thậm chí Cupertino Design của Apple đã tích hợp sẵn trong đó. Nó cực kỳ dễ để tạo một ứng dụng di động với Flutter. Nếu bạn đã sử dụng qua Java, Swift hoặc React Native thì bạn sẽ thấy rằng Flutter cực kỳ khác biệt. Điều tôi thích nhất ở Flutter chính là bạn có thể tạo một ứng dụng native mà không cần viết quá nhiều code.
- Biên dịch nhanh chóng: Hiệu xuất tối đa
- Bạn có thể thay đổi code và thấy kết quả của mình ngay lập tức ở thời gian thực. Đó được gọi là Hot Reload. Nó chỉ tốn một tí thời gian sau khi bạn lưu những thay đổi code trong ứng dụng. Với những thay đổi lớn thì nó vẫn buộc bạn phải chạy lại cả ứng dụng. Nhưng nếu bạn làm việc với thiết kế thì nó sẽ rất tiện lợi, ví dụ như bạn muốn thay đổi tỷ lệ – kích thước của widget thì tất cả sẽ ở thời gian thực, bạn sửa 1 dòng và lưu lại, thay đổi sẽ hiển thị ngay lập tức trên màn hình debug ứng dụng ngay
- Cực kỳ hữu dụng với các doanh nghiệp startup
Xem thêm Single Level Directory trong hệ điều hành
Nếu bạn muốn cho các nhà đầu tư biết được khả năng hoặc các sản phẩm của mình thì Flutter sẽ là lựa chọn rất tốt vì:
- Nó cực kỳ tốn ít tài nguyên để phát triển ứng dụng di động với Flutter vì bạn không cần phải tạo và bảo trì 2 ứng dụng di động (một cho iOS và một cho Android).
- Một lập trình viên là mọi thứ bạn cần để tạo ra một MVP (Minimum Viable Product) của bạn.
- Hiệu năng cực tốt – bạn sẽ không thể biết được điểm khác biệt giữa ứng dụng native và ứng dụng Flutter.
- Giao diện tuyệt vời – bạn có thể dễ dàng sử dụng các widget được cung cấp bởi Flutter và điều chỉnh nó để tạo một UI rất giá trị với khách hàng (bạn có thể tìm các ví dụ của các ứng dụng được lập trình bởi Flutter sau đây).
https://github.com/LiveLikeCounter/Flutter-Todolist
- Các tài liệu cực kỳ chi tiết và phong phú – Một công nghệ mới thì điều quan trọng nhất là có một tài liệu tốt. Nhưng nó không phải lúc nào cũng cần cả. Bạn có thể học được rất nhiều từ tài liệu của Flutter, và mọi thứ rất rất chi tiết với các ví dụ cho các trường hợp cơ bản. Mỗi khi gặp một vấn đề nào đó với các code của widget, bạn có thể xem lại tài liệu và tìm được kết quả ở đó.
- Một cộng đồng đang phát triển – Flutter có một cộng đồng rất là cường tráng và nó mới chỉ bắt đầu thôi. Khi học một công nghệ mới nào đó điều đầu tiên ta phải tìm hiểu đó chính là các cộng đồng của công nghệ đó, và thật bất ngờ là có rất nhiều nơi dùng để trao đổi thông tin của Flutter, tôi sẽ cho một vài ví dụ các nơi của cộng đồng Flutter
- Flutter Awesome: một danh sách tuyệt vời các thư viện và công cụ chọn lọc tốt nhất cho Flutter. Trang này tung ra nội dung hằng ngày với rất nhiều ví dụ, templates ứng dụng, lời khuyên và nhiều nữa. (https://flutterawesome.com)
- Awesome Flutter: một kho GitHub với một danh sách các đề tài, videos, components, công cụ và còn nhiều hơn thế. (https://github.com/Solido/awesome-flutter)
- It’s all widgets!: một danh sách các app được xây dựng bởi Flutter. (https://itsallwidgets.com/)
- Được hỗ trợ với Android Studio và VS Code -–Flutter khả dụng trên các IDE khác nhau nhưng có hai code editor chính dùng để phát triển công nghệ này là Android Studio (IntelliJ) và VS Code. Android Studio là một phần mềm với mọi thức được tích hợp sẵn. Bạn chỉ cần download Flutter và Dart plugin để có thể sử dụng. Còn với VS Code thì nó là một công cụ cực nhẹ và mọi thứ có thể được chỉnh được thông qua Plugin trong Marketplace
Xem thêm Lập trình Flutter
Các chức năng của Flutter
Framework Flutter cung cấp các chức năng sau cho các lập trình viên:
- Framework hiện đại và reactive.
- Sử dụng ngôn ngữ lập trình Dart và rất dễ học.
- Phát triển ứng dụng nhanh.
- Giao diện người dùng đẹp và mượt.
- Có lượng widget khổng lồ.
- Có thể chạy cùng một UI cho đa nền tảng.
- Ứng dụng với hiệu xuất cao.
Điểm mạnh và yếu của Flutter
Điểm mạnh của Flutter:
- Dart có một kho chứa lượng lớn các gói phần mềm cho phép ta mở rộng các chức năng trong ứng dụng của bạn.
- Các lập trình viên chỉ cần viết 1 code base cho 2 ứng dụng (cả nền tảng Android lẫn iOS).
- Kiểm thử trong Flutter sẽ nhẹ nhàng hơn vì với 1 code base chạy đa nền tảng thì ta chỉ cần kiểm thử 1 lần cho cả 2 nền tảng.
- Sự đơn giản của Flutter khiến nó trở thành 1 ứng cử viên sáng giá cho việc phát triển nhanh ứng dụng. Với khả năng tùy chỉnh và mở rộng của Flutter càng khiến nó mạnh mẽ hơn.
- Với Flutter, các lập trình viên có thể kiểm soát tốt tất cả widget và layout.
- Flutter cung cấp cho ta nhiều developer tool cực tốt, đặc biệt là Hot Reload.
Xem thêm Cấu trúc ứng dụng Flutter
Điểm yếu của Flutter:
- Flutter lập trình bằng ngôn ngữ Dart nên lập trình viên sẽ phải học 1 ngôn ngữ mới (dù sao thì nó vẫn rất dễ học).
- Framework hiện đại luôn cố tách biệt logic và UI hết mức có thể, nhưng trong Flutter, UI và logic được lồng ghép vào nhau. Chúng ta có thể vượt qua điều này bằng cách lập trình thông minh và sử dụng module level cao để tách UI và logic.
- Flutter là 1 framework dùng để tạo ứng dụng di động. Lập trình viên sẽ tốn rất nhiều thời gian để chọn đúng công cụ phát triển.
Các IDE hỗ trợ lập trình Flutter
Có nhiều Integrated Development Environment (IDE) hỗ trợ lập trình Flutter, trong đó có:
- Android Studio: Android Studio là một trong những IDE phổ biến nhất để lập trình Flutter. Nó cung cấp một giao diện người dùng thân thiện, các công cụ hỗ trợ lập trình và debugging, cũng như các tính năng cho phép bạn tạo các giao diện người dùng trong thời gian thực.
- Visual Studio Code: Visual Studio Code là một trình soạn thảo mã nguồn miễn phí và mạnh mẽ, hỗ trợ lập trình Flutter. Nó cung cấp các tính năng như tự động hoàn thành mã, gợi ý mã và các công cụ hỗ trợ debugging.
- IntelliJ IDEA: IntelliJ IDEA là một IDE phổ biến để lập trình Java và Kotlin, nó cũng hỗ trợ lập trình Flutter. Nó cung cấp các tính năng như tự động hoàn thành mã, gợi ý mã và các công cụ hỗ trợ debugging.
- Visual Studio: Visual Studio là một trình phát triển tích hợp cho Windows và hỗ trợ lập trình Flutter. Nó cung cấp các tính năng như tự động hoàn thành mã, gợi ý mã và các công cụ hỗ trợ debugging.
Các IDE trên là một số trong những IDE phổ biến nhất để lập trình Flutter, tuy nhiên có rất nhiều các IDE khác, quan trọng là sự quen tay và phù hợp của IDE với từng người.
Các kiến thức cơ bản cần nắm để lập trình với Flutter bao gồm
- Lập trình hướng đối tượng: Flutter sử dụng lập trình hướng đối tượng và các khái niệm như class, object, inheritance, polymorphism.
- Dart: Flutter sử dụng ngôn ngữ Dart, do đó bạn cần phải nắm vững các khái niệm cơ bản của ngôn ngữ này, như biến, hàm, vòng lặp, điều kiện, và các kiểu dữ liệu.
- Widget: Flutter sử dụng các widget để tạo ra các giao diện người dùng. Bạn cần phải nắm vững cách sử dụng các widget cơ bản như Container, Row, Column, Text và cách tạo các widget tùy chỉnh.
- State management: Trong Flutter, bạn cần phải quản lý trạng thái của ứng dụng của bạn. Bạn cần phải nắm vững các phương pháp quản lý trạng thái cơ bản như setState, Provider, và BLoC.
- Tạo các giao diện người dùng: Bạn cần nắm vững cách sử dụng các widget để tạo ra các giao diện người dùng đẹp và chuyên nghiệp.
- Lập trình di động: Bạn cần phải nắm vững các kích thước, layout và các thành phần cơ bản của một ứng dụng di động, cách tạo các hiệu ứng và animation.
- Tương tác với các thiết bị: Bạn cần phải nắm vững cách sử dụng các thành phần như camera, microphone, GPS, và các thiết bị khác trong Flutter.
- Tích hợp API: Bạn cần phải nắm vững cách tương tác với các API bên ngoài, gửi và nhận dữ liệu từ mạng, và xử lý các lỗi có thể xảy ra.
- Debugging và testing: Bạn cần phải nắm vững cách debug và test ứng dụng Flutter của mình, bao gồm các công cụ và thư viện hỗ trợ.
- Tích hợp với Firebase: Bạn cần phải nắm vững cách tích hợp với Firebase để tạo các chức năng như đăng nhập, lưu trữ dữ liệu, và push notification.