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

Quản lý Trạng thái trong Flutter – Hiểu và làm chủ State

0 0 2

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

Theo Viblo Asia

👋 Lời mở đầu

Tiếp tục hành trình chinh phục Flutter từ con số 0, mỗi ngày mình đều dành thời gian ghi chép lại những gì đã học được – vừa để ôn luyện, vừa như một cuốn nhật ký nhỏ đồng hành cùng quá trình học tập này.

Trong bài viết hôm nay, chúng ta sẽ tìm hiểu về một trong những khái niệm cực kỳ quan trọng khi làm app bằng Flutter: State và cách quản lý trạng thái.

Bài viết này là quá trình mình tự học nên nếu có gì chưa đúng hoặc còn thiếu sót, mong mọi người góp ý giúp mình hoàn thiện hơn nha 🙏

🔍 1. State là gì trong Flutter?

Khi một ứng dụng cần thay đổi nội dung hiển thị (ví dụ: người dùng thao tác thay đổi, nhập văn bản, đổi màu…), Flutter cần biết thông tin nào thay đổi – đó chính là State.

Nói đơn giản, state là dữ liệu đại diện cho tình trạng hiện tại của một widget. Khi state thay đổi, giao diện sẽ tự động được cập nhật lại.

📦 2. Quản lý trạng thái như thế nào?

Flutter cung cấp nhiều cách để quản lý state. Dưới đây là một số phương pháp phổ biến:

🧱 2.1. Quản lý state cục bộ (Local State)

Dùng trực tiếp trong StatefulWidget bằng setState():

class CounterPage extends StatefulWidget {  _CounterPageState createState() => _CounterPageState();
} class _CounterPageState extends State<CounterPage> { int count = 0; void _increment() { setState(() { count++; }); }  Widget build(BuildContext context) { return Column( children: [ Text('Giá trị: $count'), ElevatedButton( onPressed: _increment, child: Text('Tăng'), ), ], ); }
}

📌 Lưu ý: setState() chỉ nên dùng cho widget đơn giản hoặc không cần chia sẻ dữ liệu sang nơi khác.

🌍 2.2. Quản lý state toàn cục (Global State)

Khi nhiều widget cần chia sẻ chung một dữ liệu, ta nên dùng giải pháp như:

  • Provider (dễ tiếp cận)
  • Riverpod (phiên bản nâng cấp, an toàn hơn)
  • Bloc (phù hợp cho dự án phức tạp)
  • GetX, MobX, Redux...

Trong phạm vi bài hôm nay, mình chưa đi sâu vào thư viện mà sẽ chỉ dùng setState() để làm quen.

🛠 3. Sử dụng state trong App đếm số đơn giản

Chúng ta sẽ tạo một app nhỏ: nhấn nút để tăng số lần đếm.

import 'package:flutter/material.dart'; void main() => runApp(MyApp()); class MyApp extends StatelessWidget {  Widget build(BuildContext context) { return MaterialApp( title: 'Đếm số', home: CounterPage(), ); }
} class CounterPage extends StatefulWidget {  _CounterPageState createState() => _CounterPageState();
} class _CounterPageState extends State<CounterPage> { int _count = 0; void _increase() { setState(() { _count++; }); }  Widget build(BuildContext context) { return Scaffold( appBar: AppBar(title: Text('App đếm số')), body: Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ Text('Bạn đã nhấn nút:'), SizedBox(height: 10), Text('$_count lần', style: TextStyle(fontSize: 24)), SizedBox(height: 20), ElevatedButton( onPressed: _increase, child: Text('Tăng lên'), ), ], ), ), ); }
}

💡 4. Lưu ý khi dùng State

  • Tránh dùng setState() quá nhiều hoặc ở nơi không cần thiết.
  • Khi app phức tạp, nên học các thư viện như Provider, Riverpod, BLoC.
  • Tách các widget riêng biệt để tránh build lại toàn bộ.

👋 Lời kết

Qua bài học ngày hôm nay, mình thấy việc quản lý state là phần không thể thiếu nếu muốn app hoạt động đúng ý. Flutter cung cấp nhiều cách để làm việc này, bắt đầu từ setState() cho đến các thư viện mạnh mẽ hơn như Provider.

Ngày mai mình sẽ tiếp tục tìm hiểu một số thành phần thú vị hơn như navigation (chuyển màn hình), routescác tương tác giữa màn hình với nhau!

Hẹn gặp lại ở bài viết tiếp theo nha 😄

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 355

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

Dart Cheat Sheet - Full bộ "bỏ túi" các syntax trong ngôn ngữ Dart

Dart là một ngôn ngữ mới dùng cho cả Mobile và Web với Flutter Framework, thậm chí dùng cho Backend. Để giúp mọi người dễ dàng nắm bắt ngôn ngữ này hơn, 200lab Education đã tổng hợp thành bộ "bí tịch" dưới đây để tra cứu nhanh, tăng tốc phát triển phần mềm.

0 0 54

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

Học Flutter từ cơ bản đến nâng cao. Phần 2: StatefulWidget vs StatelessWidget. Khi nào thì cần sử dụng cái nào?

Lời mở đầu. Ở bài trước, chúng ta đã dừng lại ở một kết thúc mở.

0 0 102

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

Học Flutter từ cơ bản đến nâng cao. Phần 4: Lột trần InheritedWidget

Lời mở đầu. Trong đoạn kết của phần 2, chúng ta đã đối mặt với 1 bài toán: Làm thế nào để truyền data từ một widget cha nào đó xuống thẳng widget chắt mà không phải sử dụng constructor để truyền xuống

0 0 71

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

Chinh phục RxDart Flutter trong 3 nốt nhạc. Nốt thứ nhất: Stream và giải thích các thuật ngữ

Lời mở đầu. Mình viết series này với mục đích chia sẻ kiến thức về RxDart trong Flutter.

0 0 80