Là 1 công cụ cho phép triển khai một ứng dụng "Native Cross-Platform" (IOS, Android) với một ngôn ngữ lập trình và 1 codebase.
Là một ngôn ngữ lập trình tập trung vào việc xây dựng giao diện frontend (web, mobile app), giao diện người dùng (UI). Flutter sử dụng Dart nhưng hoàn toàn độc lập với Dart, tức là bạn có thể triển khai Web App với Dart.
Flutter xây dựng trên Dart, điều đó có nghĩa, Dart mới là ngôn ngữ lập trình thực sự chúng ta sử dụng, flutter chỉ là một tập hợp các công cụ, các tính năng, tiện ích, các widget được triển khai sử dụng Dart.
Flutter chỉ đơn giản biên dịch code Dart cho các nền tảng khác nhau thông qua Flutter SDK
Widget hữu hình ví dụ như Input, button, text, card , ... những thứ được vẽ trên màn hình, có thể nhìn thấy được ngay trên ứng dụng.
Widget vô hình như row, column, listview ... là những widget mà người dùng không thể nhìn thấy chi tiết hình hài nó trên ứng dụng, nhưng nó giúp tổ chức nội dung các thành phần bên trong nó.
Thông thường widget vô hình sắp xếp, quyết định vị trí, điều khiển việc widget hữu hình sẽ được vẽ ở đâu trên màn hình, nó đóng vai trò vô cùng quan trọng.
Vì không hiển thị trực tiếp, khi sử dụng widget vô hình, chúng ta mặc dù có thể hình dung những widget được sử dụng nhưng không thể biết chính xác, ví dụ như trường hợp sử dụng Column và ListView bên dưới, giao diện hiển thị gần như là tương đương.
State - Trạng thái
: đại diện cho dữ liệu thay đổi trong vòng đời ứng dụng.
📌 Khi state
thay đổi, UI vẽ lại widget để phản ánh state
mới.
📎 Phần giao diện hiển thị chỉ đại diện cho state
tại một thời điểm, thay đổi state
-> thay đổi giao diện.
Khi gọi hàm setState(() {})
trong Stateful Widget
, Flutter thực hiện re-run lại phương thức build()
BuildContext
chứa một widget được xây dựng bên trong, tham chiếu đến vị trí của widget trong Widget tree
, nơi widget được gắn vào tree
.
Một BuildContext
chỉ thuộc về một widget. Nếu một widget chứa các widget con, BuildContext
của widget cha sẽ trở thành parent BuildContext
của các BuildContext
của các widget con.