Do not use BuildContexts across async gaps

Do not use BuildContexts across async gaps

Bạn đã bao giờ gặp phải lỗi này khi sử dụng BuildContext sau khi đợi một Future hoàn thành chưa?

Đây là một lỗi phổ biến có thể dẫn đến hành vi không mong muốn.

Vậy hãy cùng tìm hiểu nguyên nhân gây ra nó và cách khắc phục .

Lifecycle of Stateful Widget 

Trong Flutter,  BuildContext xác định phần tử tương ứng với widget của chúng ta trong cây phần tử.

Tại bất kỳ thời điểm nào (và đặc biệt là sau hoạt động không đồng bộ), mounted có thể bị unmount.

Cùng xem 1 ví dụ sau :

Ở ví dụ trên :

+ Khi người dùng ấn vào button sẽ kích hoạt callback onPressed

+ Chờ trong 2 s và điều hường bằng nút quay lại

+ Khi Future hoàn thành sử Navigator.of(context)

Chúng ta sẽ thấy 1 cảnh báo như ảnh trên : Điều này xảy ra khi context có thể bị unmount sau khi Future hoàn thành.

Để giải quyết vấn đề này chúng ta chỉ cần kiểm tra widget đã được mounted hay chưa trước khi sử dụng context.

Hi vọng rằng với 1 mẹo nhỏ này có thể giúp bạn tránh khỏi lỗi trong quá trình phát triển ứng dụng Flutter.

Tham khảo : https://www.youtube.com/watch?v=bzWaMpD1LHY

Happy Coding!!!!