So Sánh StatelessWidget và StatefulWidget & Các Widget Nâng Cao

0 0 0

Người đăng: Coder Tập Sự

Theo Viblo Asia

Chào mọi người! Hôm nay chúng ta sẽ tiếp tục hành trình khám phá Flutter và đến với bài học về StatelessWidget và StatefulWidget. Trong bài này, mình sẽ giúp các bạn phân biệt sự khác nhau giữa hai loại widget này, cùng với một số widget nâng cao mà chúng ta sẽ dùng trong ứng dụng Flutter.

1. StatelessWidget vs StatefulWidget

Khi làm việc với Flutter, việc hiểu rõ sự khác nhau giữa StatelessWidgetStatefulWidget là cực kỳ quan trọng, vì chúng quyết định cách chúng ta sẽ tổ chức và cập nhật giao diện trong ứng dụng.

StatelessWidget

StatelessWidget là widget không có trạng thái thay đổi sau khi được tạo ra. Nó chỉ render một lần và không thay đổi gì nữa trong suốt vòng đời của widget đó.

Ví dụ: Một nút bấm, một hình ảnh, hay một đoạn văn bản không thay đổi sau khi hiển thị đều có thể sử dụng StatelessWidget.

Ví dụ về StatelessWidget:

class MyStatelessWidget extends StatelessWidget {  Widget build(BuildContext context) { return Text('Hello Stateless'); }
}

StatefulWidget

StatefulWidget là widget có thể thay đổi trạng thái sau khi được tạo ra. Khi trạng thái của widget thay đổi, nó sẽ trigger lại quá trình render, và UI sẽ được cập nhật tương ứng.

Ví dụ: Sử dụng đếm số, form nhập liệu, hoặc một ứng dụng có sự thay đổi dữ liệu sẽ sử dụng StatefulWidget.

Ví dụ về StatefulWidget:

class MyStatefulWidget extends StatefulWidget {  _MyStatefulWidgetState createState() => _MyStatefulWidgetState();
} class _MyStatefulWidgetState extends State<MyStatefulWidget> { int _counter = 0;  Widget build(BuildContext context) { return Column( children: [ Text('Counter: $_counter'), ElevatedButton( onPressed: () { setState(() { _counter++; }); }, child: Text('Increase Counter'), ), ], ); }
}

2. Các Widget Nâng Cao trong Flutter

Bên cạnh việc sử dụng StatelessWidgetStatefulWidget, Flutter còn cung cấp nhiều widget nâng cao để giúp chúng ta xây dựng giao diện phức tạp và bắt mắt hơn. Dưới đây là một số widget nâng cao mà mình nghĩ sẽ hữu ích cho chúng ta:

  • ListView: Hiển thị danh sách các phần tử theo chiều dọc, có thể cuộn được.
  • GridView: Hiển thị các phần tử dưới dạng lưới (grid).
  • Form và TextFormField: Dùng để tạo các form nhập liệu trong ứng dụng.
  • Hero Animation: Giúp tạo hiệu ứng chuyển cảnh giữa các màn hình.
  • CustomPaint: Cho phép vẽ đồ họa tùy chỉnh, tạo các hình ảnh phức tạp hoặc hiệu ứng đặc biệt.

Chúng ta sẽ tìm hiểu cac widget này trong những bài học sau nhé 😆

3. Một Số Lỗi Thường Gặp và Cách Khắc Phục

Khi làm việc với StatefulWidget, một số lỗi phổ biến có thể xảy ra là:

  • Không gọi setState() đúng cách: Khi bạn thay đổi dữ liệu mà không gọi setState(), giao diện sẽ không được cập nhật. Hãy chắc chắn gọi setState() khi muốn thay đổi trạng thái.

4. Kết Luận

  • StatelessWidget: Dùng cho các widget không thay đổi sau khi được tạo.
  • StatefulWidget: Dùng cho các widget có thể thay đổi trạng thái, giúp UI được cập nhật khi trạng thái thay đổi.
  • Các widget nâng cao giúp chúng ta xây dựng giao diện linh hoạt và đẹp mắt hơn, như ListView, GridView, Form, và Hero Animation.

Qua bài học ngày hôm nay, chúng ta đã hiểu rõ hơn về cách sử dụng StatelessWidgetStatefulWidget, đồng thời cũng làm quen với một số widget nâng cao trong Flutter.

Ngày mai, mình sẽ tiếp tục tìm hiểu thêm về các chủ đề khác trong Flutter, có thể là về quản lý trạng thái hoặc tiếp tục với các widget phức tạp hơn.

Bình luận

Bài viết tương tự

- vừa được xem lúc

Học Flutter từ cơ bản đến nâng cao. Phần 1: Làm quen cô nàng Flutter

Lời mở đầu. Gần đây, Flutter nổi lên và được Google PR như một xu thế của lập trình di động vậy.

0 0 298

- vừa được xem lúc

Học Flutter từ cơ bản đến nâng cao. Phần 3: Lột trần cô nàng Flutter, BuildContext là gì?

Lời mở đầu. Màn làm quen cô nàng FLutter ở Phần 1 đã gieo rắc vào đầu chúng ta quá nhiều điều bí ẩn về nàng Flutter.

1 1 354

- vừa được xem lúc

Flutter Animation: Creating medium’s clap animation in flutte Part II

Trong phần 1 mình đã giới thiệu với các bạn cơ bản về Animation trong Flutter. Score Widget Size Animation.

0 0 69

- vừa được xem lúc

Flutter - GetX - Using GetConnect to handle API request (Part 4)

Giới thiệu. Xin chào các bạn, lại là mình với series về GetX và Flutter.

0 0 367

- vừa được xem lúc

StatefulWidget và StatelessWidget trong Flutter

I. Mở đầu. Khi các bạn build một ứng dụng với Flutter thì Widgets là thứ không thể thiếu đúng không ạ. Và 2 loại Widget không thể thiếu đó là StatefullWidget và StatelessWidget.

0 0 155

- vừa được xem lúc

Tìm hiểu về Riverpod - Provider nhưng không hắn :v

Trong Flutter có rất nhiều các quản lý state: Provider, Bloc, GetX, Redux,... khó mà nói cái nào tốt hơn cái nào. Tuy nhiên nếu bạn đã làm quen với Provider thì không ngại để tìm hiểu thêm về Riverpod. Một bản nâng cấp của Provider. Nếu bạn để ý thì cái tên "Riverpod" là các chữ cái của "Provider" đ

0 0 70