Trong Flutter, widget được chia thành hai loại chính:

  1. Stateless Widget:
    • Đây là loại widget không có trạng thái, nghĩa là khi được xây dựng, nó không thể thay đổi. Khi dữ liệu của nó thay đổi, toàn bộ widget sẽ được xây dựng lại từ đầu.
    • Ví dụ: Text, Icon, Container.
  2. Stateful Widget:
    • Loại widget này có trạng thái và có thể thay đổi trong vòng đời của nó. Nó có thể phản hồi với các sự kiện bên ngoài và thay đổi giao diện người dùng dựa trên những sự kiện đó.
    • Ví dụ: Checkbox, TextField, Slider.

Ngoài hai loại chính trên, Flutter cung cấp nhiều widget khác nhau phục vụ cho các mục đích cụ thể, chẳng hạn như bố cục (layout), tương tác, điều hướng, hoạt ảnh, và quản lý trạng thái. Một số ví dụ phổ biến:

  • Layout Widgets: Row, Column, Stack, Expanded, Padding
  • Interactive Widgets: GestureDetector, Button, InkWell
  • Input Widgets: TextField, Form, Slider
  • Animation Widgets: AnimatedContainer, FadeTransition, Hero

Mỗi widget trong Flutter thường là một phần của cây widget và có thể lồng nhau để tạo ra giao diện phức tạp.