SlideShare a Scribd company logo
1 of 39
Flutter
Stateful & Stateless Widget, Widget Tree,
Build Context, LifeCycle
long@techmaster.vn
Flutter Default App
Material
https://flutter.dev/docs/development/ui/widgets/material
https://flutter.dev/docs/development/ui/widgets/cupertino
Cupertino
Widget tree
Widget Tree là cấu trúc đại diện
cho toàn bộ ứng dụng. tương tự
với DOM trong trang web.
Vai trò như Mục lục của cuốn sách,
widget tree thể hiện toàn bộ các
widget được dùng, vị trí và thứ tự
các widget được đặt.
Element Tree & Render Object
1- gọi hàm runApp(), Flutter build một Widget tree chứa các
widget.
2- Các element được tạo bởi các widget. Sau khi widget được
built, framework gọi hàm Widget.createElement(this).
Element Tree & Render Object
3- Element gọi phương thức createRenderObject() để tạo ra các
RenderObject, các RenderObject này cấu thành nên Render Tree.
4- Mỗi một Element tham chiếu đến một Widget và một
RenderObject.
Element Tree & Render Object
Sao lại cần đến 3 tree?
Element không giữ cấu hình widget, nhưng có thể nhìn cấu hình
chi tiết thông qua việc tham chiếu đến widget tương ứng.
RenderObject chứa toàn bộ logic để rendering widget, nên nó khá
nặng nề để khởi tạo.
>> Khi widget trong tree thay đổi, Flutter sử dụng Elements để
so sánh widget mới với RenderObject đã tồn tại, -> nếu type của
widget không đổi, Flutter sẽ không tạo lại cái RenderObject nặng
nề đó, thay vào đó chỉ cập nhật mutable configuration.
Widget rất nhẹ để khởi tạo, nên nó sẽ được dùng để mô tả state
hiện tại.
Lưu ý
StateObject thực sự được quản lý
bởi element, không phải widget.
Flutter render dựa trên Elements và
state object, chứ nó không liên
quan gì đến widget.
Ví dụ Element và RenderObject
Đảo nút nhấn -> chỉ đảo text và
chức năng, màu nền không thay đổi
VÍ DỤ: https://bit.ly/337DUAd
Đa phần các Widget
extends từ Stateless
hoặc Stateful Widget
State
State - Trạng thái: đại diện cho dữ
liệu thay đổi trong vòng đời ứng
dụng.
📌 Khi dữ liệu của stateful 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.
Stateless Widget
Immutable – bất biến
Stateless Widget không
thể re-run build() khi
các thuộc tính của nó
thay đổi.
Không có state.
Không chấp nhận sự thay đổi
bên trong nó.
Đối với sự thay đổi từ
widget cha thì nó sẽ thụ
động thay đổi theo.
Stateless Widget
Build method
How to render a widget?
Flutter gọi tới build method
trong widget, nó trả về một
Widget object chứa thông tin
cấu hình để Flutter render.
Khi nào build method
Stateless được thực hiện ?
● Lần đầu tiên widget được thêm vào tree.
● Khi widget cha thay đổi.
● Khi các giá trị từ nguồn khác thay đổi
Ví dụ một Widget kế thừa sẽ phụ thuộc vào các thay đổi từ
nơi nó kế thừa
https://api.flutter.dev/flutter/widgets/StatelessWidget-
class.html
Stateful Widget
Thường được sử dụng khi giao diện cần thay đổi linh hoạt
● Người dùng tương tác gì đó trên giao diện
● Nhận dữ liệu từ nguồn khác
● Thay đổi theo thời gian
Stateful Widget
● Một class extends
từ StatefulWidget.
● Một Class extends
từ State
class extends StatefulWidget
class extends State
State và data trong Stateful
Thường được hiểu là dữ liệu bên trong widget
● Data trong Flutter Widget là immutable - bất biến.
Widget có thể lưu trữ data và data đó không đổi.
● Stateful Widget được liên kết với một State Object ,
Object này mới là nơi chứa dữ liệu mutable data ,
bản thân Widget không chứa mutable data.
⚠️ Stateful Widget có chứa mutable data ?
setState()
❓Tại sao cần gọi hàm
setState(() {}) trong Stateful
Widget mà không set thẳng
value?
Nếu không có setState(() {}),
Widget vẫn thay đổi giá trị
thuộc tính nhưng nó sẽ không
re-run build() method, vì vậy,
việc thay đổi đó ko phản ánh
lên màn hình. setState là như
một trigger thông báo cho
Flutter re-run build() method.
StatefulWidget lifecycle
StatefulWidget lifecycle
Ví dụ : https://bit.ly/2qgVYuv
StatefulWidget lifecycle
createState(): Khi xây
dựng StatefulWidget, ngay
lập tức gọi
createdState().
initState(): Để khởi tạo
state, chỉ được gọi một
lần khi widget được tạo.
setState như một trigger
thông báo cho Flutter re-
run build() method
StatefulWidget lifecycle
didChangeDependencies : có
thể được gọi một lần sau
initState, cũng có thể
được gọi lại trong
Lifecycle
Tại thời điểm này, State
được coi là "dirty", đó là
cách Flutter theo dõi
những widget nào cần được
rebuild. Bất cứ khi nào
một state object cần
rebuild, nó tự đánh dấu là
"dirty".
StatefulWidget lifecycle
didChangeDependencies : có
thể được gọi một lần sau
initState, cũng có thể
được gọi lại trong
Lifecycle
Tại thời điểm này, State
được coi là "dirty", đó là
cách Flutter theo dõi
những widget nào cần được
rebuild. Bất cứ khi nào
một state object cần
rebuild, nó tự đánh dấu là
"dirty".
StatefulWidget lifecycle
build() xây dựng đầy đủ
state object.
sau build(), state được
đánh dấu là "clean".
-> lifecycle hoàn thành
một “single track”.
StatefulWidget lifecycle
setState() đánh dấu state ở trạng
thái “dirty”, thực hiện re-run
lại phương thức build()
Một widget cha ở trên có thể yêu
cầu xây dựng lại widget đang thao
tác.
Nếu vị trí sẽ được rebuild với
cùng loại và khóa widget, thì sẽ
gọi didUpdateWidget(old widget).
state cũng bị đánh dấu là “dirty”
StatefulWidget lifecycle
disposed() xóa state
object ra khỏi tree, xóa
tài nguyên, widget không
bao giờ được gọi lại
State
nếu setState() cha được gọi -> vẽ lại tất cả con
State
buộc phải gọi setState() từ cha hoặc call-back
Build Context
Mọi widget trong Flutter được tạo từ
một build() method
và method này đều lấy BuildContext làm
đối số (argument).
Build Context
Context tham chiếu đến vị trí của
Widget trong cấu trúc tree.
Một context chỉ thuộc về một widget.
Mỗi Widget có phương thức build() và
context riêng.
BuildContext là cha của widget được
trả về.
Build Context
Ví dụ: https://bit.ly/357pwtc
Ví dụ về
BuildContext tham
chiếu đến vị trí
của widget
WithBuildContext
-> từ đó dùng
method ancestor lấy
widget cha (cụ thể
là Column)
-> hoặc lấy các
widget xung quanh
Build Context
Nếu một widget chứa
các widget con,
context của widget cha
sẽ trở thành parent
context của các
context widget con.
Build Context
BuildContext thực sự hữu ích khi bạn
muốn truyền dữ liệu xuống mà không
phải gán thủ công cho mọi vật dụng

More Related Content

Recently uploaded

Danh sách sinh viên tốt nghiệp Đại học - Cao đẳng Trường Đại học Phú Yên năm ...
Danh sách sinh viên tốt nghiệp Đại học - Cao đẳng Trường Đại học Phú Yên năm ...Danh sách sinh viên tốt nghiệp Đại học - Cao đẳng Trường Đại học Phú Yên năm ...
Danh sách sinh viên tốt nghiệp Đại học - Cao đẳng Trường Đại học Phú Yên năm ...hoangtuansinh1
 
PHƯƠNG THỨC VẬN TẢI ĐƯỜNG SẮT TRONG VẬN TẢI
PHƯƠNG THỨC VẬN TẢI ĐƯỜNG SẮT TRONG VẬN TẢIPHƯƠNG THỨC VẬN TẢI ĐƯỜNG SẮT TRONG VẬN TẢI
PHƯƠNG THỨC VẬN TẢI ĐƯỜNG SẮT TRONG VẬN TẢImyvh40253
 
Các điều kiện bảo hiểm trong bảo hiểm hàng hoá
Các điều kiện bảo hiểm trong bảo hiểm hàng hoáCác điều kiện bảo hiểm trong bảo hiểm hàng hoá
Các điều kiện bảo hiểm trong bảo hiểm hàng hoámyvh40253
 
BỘ LUYỆN NGHE VÀO 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ LỜI - CÓ FILE NGHE.pdf
BỘ LUYỆN NGHE VÀO 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ LỜI - CÓ FILE NGHE.pdfBỘ LUYỆN NGHE VÀO 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ LỜI - CÓ FILE NGHE.pdf
BỘ LUYỆN NGHE VÀO 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ LỜI - CÓ FILE NGHE.pdfNguyen Thanh Tu Collection
 
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI KỸ NĂNG VIẾT ĐOẠN VĂN NGHỊ LUẬN XÃ HỘI 200 C...
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI KỸ NĂNG VIẾT ĐOẠN VĂN NGHỊ LUẬN XÃ HỘI 200 C...TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI KỸ NĂNG VIẾT ĐOẠN VĂN NGHỊ LUẬN XÃ HỘI 200 C...
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI KỸ NĂNG VIẾT ĐOẠN VĂN NGHỊ LUẬN XÃ HỘI 200 C...Nguyen Thanh Tu Collection
 
GNHH và KBHQ - giao nhận hàng hoá và khai báo hải quan
GNHH và KBHQ - giao nhận hàng hoá và khai báo hải quanGNHH và KBHQ - giao nhận hàng hoá và khai báo hải quan
GNHH và KBHQ - giao nhận hàng hoá và khai báo hải quanmyvh40253
 
Đề cương môn giải phẫu......................
Đề cương môn giải phẫu......................Đề cương môn giải phẫu......................
Đề cương môn giải phẫu......................TrnHoa46
 
kinh tế chính trị mác lênin chương hai và hàng hoá và sxxhh
kinh tế chính trị mác lênin chương hai và hàng hoá và sxxhhkinh tế chính trị mác lênin chương hai và hàng hoá và sxxhh
kinh tế chính trị mác lênin chương hai và hàng hoá và sxxhhdtlnnm
 
SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...
SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...
SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...Nguyen Thanh Tu Collection
 
1.DOANNGOCPHUONGTHAO-APDUNGSTEMTHIETKEBTHHHGIUPHSHOCHIEUQUA (1).docx
1.DOANNGOCPHUONGTHAO-APDUNGSTEMTHIETKEBTHHHGIUPHSHOCHIEUQUA (1).docx1.DOANNGOCPHUONGTHAO-APDUNGSTEMTHIETKEBTHHHGIUPHSHOCHIEUQUA (1).docx
1.DOANNGOCPHUONGTHAO-APDUNGSTEMTHIETKEBTHHHGIUPHSHOCHIEUQUA (1).docxTHAO316680
 
GIÁO TRÌNH KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
GIÁO TRÌNH  KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘIGIÁO TRÌNH  KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
GIÁO TRÌNH KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘIĐiện Lạnh Bách Khoa Hà Nội
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...Nguyen Thanh Tu Collection
 
3-BẢNG MÃ LỖI CỦA CÁC HÃNG ĐIỀU HÒA .pdf - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
3-BẢNG MÃ LỖI CỦA CÁC HÃNG ĐIỀU HÒA .pdf - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI3-BẢNG MÃ LỖI CỦA CÁC HÃNG ĐIỀU HÒA .pdf - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
3-BẢNG MÃ LỖI CỦA CÁC HÃNG ĐIỀU HÒA .pdf - ĐIỆN LẠNH BÁCH KHOA HÀ NỘIĐiện Lạnh Bách Khoa Hà Nội
 
cac-cau-noi-tthcm.pdf-cac-cau-noi-tthcm-
cac-cau-noi-tthcm.pdf-cac-cau-noi-tthcm-cac-cau-noi-tthcm.pdf-cac-cau-noi-tthcm-
cac-cau-noi-tthcm.pdf-cac-cau-noi-tthcm-KhnhHuyn546843
 
ĐỀ CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT CÁC TỈNH THÀNH NĂM HỌC 2020 –...
ĐỀ CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT CÁC TỈNH THÀNH NĂM HỌC 2020 –...ĐỀ CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT CÁC TỈNH THÀNH NĂM HỌC 2020 –...
ĐỀ CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT CÁC TỈNH THÀNH NĂM HỌC 2020 –...Nguyen Thanh Tu Collection
 
sách sinh học đại cương - Textbook.pdf
sách sinh học đại cương   -   Textbook.pdfsách sinh học đại cương   -   Textbook.pdf
sách sinh học đại cương - Textbook.pdfTrnHoa46
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...Nguyen Thanh Tu Collection
 
Campbell _2011_ - Sinh học - Tế bào - Ref.pdf
Campbell _2011_ - Sinh học - Tế bào - Ref.pdfCampbell _2011_ - Sinh học - Tế bào - Ref.pdf
Campbell _2011_ - Sinh học - Tế bào - Ref.pdfTrnHoa46
 
Giới thiệu Dự án Sản Phụ Khoa - Y Học Cộng Đồng
Giới thiệu Dự án Sản Phụ Khoa - Y Học Cộng ĐồngGiới thiệu Dự án Sản Phụ Khoa - Y Học Cộng Đồng
Giới thiệu Dự án Sản Phụ Khoa - Y Học Cộng ĐồngYhoccongdong.com
 

Recently uploaded (20)

Danh sách sinh viên tốt nghiệp Đại học - Cao đẳng Trường Đại học Phú Yên năm ...
Danh sách sinh viên tốt nghiệp Đại học - Cao đẳng Trường Đại học Phú Yên năm ...Danh sách sinh viên tốt nghiệp Đại học - Cao đẳng Trường Đại học Phú Yên năm ...
Danh sách sinh viên tốt nghiệp Đại học - Cao đẳng Trường Đại học Phú Yên năm ...
 
PHƯƠNG THỨC VẬN TẢI ĐƯỜNG SẮT TRONG VẬN TẢI
PHƯƠNG THỨC VẬN TẢI ĐƯỜNG SẮT TRONG VẬN TẢIPHƯƠNG THỨC VẬN TẢI ĐƯỜNG SẮT TRONG VẬN TẢI
PHƯƠNG THỨC VẬN TẢI ĐƯỜNG SẮT TRONG VẬN TẢI
 
Các điều kiện bảo hiểm trong bảo hiểm hàng hoá
Các điều kiện bảo hiểm trong bảo hiểm hàng hoáCác điều kiện bảo hiểm trong bảo hiểm hàng hoá
Các điều kiện bảo hiểm trong bảo hiểm hàng hoá
 
BỘ LUYỆN NGHE VÀO 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ LỜI - CÓ FILE NGHE.pdf
BỘ LUYỆN NGHE VÀO 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ LỜI - CÓ FILE NGHE.pdfBỘ LUYỆN NGHE VÀO 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ LỜI - CÓ FILE NGHE.pdf
BỘ LUYỆN NGHE VÀO 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ LỜI - CÓ FILE NGHE.pdf
 
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI KỸ NĂNG VIẾT ĐOẠN VĂN NGHỊ LUẬN XÃ HỘI 200 C...
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI KỸ NĂNG VIẾT ĐOẠN VĂN NGHỊ LUẬN XÃ HỘI 200 C...TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI KỸ NĂNG VIẾT ĐOẠN VĂN NGHỊ LUẬN XÃ HỘI 200 C...
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI KỸ NĂNG VIẾT ĐOẠN VĂN NGHỊ LUẬN XÃ HỘI 200 C...
 
GNHH và KBHQ - giao nhận hàng hoá và khai báo hải quan
GNHH và KBHQ - giao nhận hàng hoá và khai báo hải quanGNHH và KBHQ - giao nhận hàng hoá và khai báo hải quan
GNHH và KBHQ - giao nhận hàng hoá và khai báo hải quan
 
Đề cương môn giải phẫu......................
Đề cương môn giải phẫu......................Đề cương môn giải phẫu......................
Đề cương môn giải phẫu......................
 
kinh tế chính trị mác lênin chương hai và hàng hoá và sxxhh
kinh tế chính trị mác lênin chương hai và hàng hoá và sxxhhkinh tế chính trị mác lênin chương hai và hàng hoá và sxxhh
kinh tế chính trị mác lênin chương hai và hàng hoá và sxxhh
 
1 - MÃ LỖI SỬA CHỮA BOARD MẠCH BẾP TỪ.pdf
1 - MÃ LỖI SỬA CHỮA BOARD MẠCH BẾP TỪ.pdf1 - MÃ LỖI SỬA CHỮA BOARD MẠCH BẾP TỪ.pdf
1 - MÃ LỖI SỬA CHỮA BOARD MẠCH BẾP TỪ.pdf
 
SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...
SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...
SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...
 
1.DOANNGOCPHUONGTHAO-APDUNGSTEMTHIETKEBTHHHGIUPHSHOCHIEUQUA (1).docx
1.DOANNGOCPHUONGTHAO-APDUNGSTEMTHIETKEBTHHHGIUPHSHOCHIEUQUA (1).docx1.DOANNGOCPHUONGTHAO-APDUNGSTEMTHIETKEBTHHHGIUPHSHOCHIEUQUA (1).docx
1.DOANNGOCPHUONGTHAO-APDUNGSTEMTHIETKEBTHHHGIUPHSHOCHIEUQUA (1).docx
 
GIÁO TRÌNH KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
GIÁO TRÌNH  KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘIGIÁO TRÌNH  KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
GIÁO TRÌNH KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
3-BẢNG MÃ LỖI CỦA CÁC HÃNG ĐIỀU HÒA .pdf - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
3-BẢNG MÃ LỖI CỦA CÁC HÃNG ĐIỀU HÒA .pdf - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI3-BẢNG MÃ LỖI CỦA CÁC HÃNG ĐIỀU HÒA .pdf - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
3-BẢNG MÃ LỖI CỦA CÁC HÃNG ĐIỀU HÒA .pdf - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
 
cac-cau-noi-tthcm.pdf-cac-cau-noi-tthcm-
cac-cau-noi-tthcm.pdf-cac-cau-noi-tthcm-cac-cau-noi-tthcm.pdf-cac-cau-noi-tthcm-
cac-cau-noi-tthcm.pdf-cac-cau-noi-tthcm-
 
ĐỀ CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT CÁC TỈNH THÀNH NĂM HỌC 2020 –...
ĐỀ CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT CÁC TỈNH THÀNH NĂM HỌC 2020 –...ĐỀ CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT CÁC TỈNH THÀNH NĂM HỌC 2020 –...
ĐỀ CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT CÁC TỈNH THÀNH NĂM HỌC 2020 –...
 
sách sinh học đại cương - Textbook.pdf
sách sinh học đại cương   -   Textbook.pdfsách sinh học đại cương   -   Textbook.pdf
sách sinh học đại cương - Textbook.pdf
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
Campbell _2011_ - Sinh học - Tế bào - Ref.pdf
Campbell _2011_ - Sinh học - Tế bào - Ref.pdfCampbell _2011_ - Sinh học - Tế bào - Ref.pdf
Campbell _2011_ - Sinh học - Tế bào - Ref.pdf
 
Giới thiệu Dự án Sản Phụ Khoa - Y Học Cộng Đồng
Giới thiệu Dự án Sản Phụ Khoa - Y Học Cộng ĐồngGiới thiệu Dự án Sản Phụ Khoa - Y Học Cộng Đồng
Giới thiệu Dự án Sản Phụ Khoa - Y Học Cộng Đồng
 

Featured

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by HubspotMarius Sescu
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTExpeed Software
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsPixeldarts
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthThinkNow
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfmarketingartwork
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024Neil Kimberley
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)contently
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024Albert Qian
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsKurio // The Social Media Age(ncy)
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Search Engine Journal
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summarySpeakerHub
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next Tessa Mero
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentLily Ray
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best PracticesVit Horky
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project managementMindGenius
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...RachelPearson36
 

Featured (20)

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPT
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage Engineerings
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 

Flutter widget

  • 1. Flutter Stateful & Stateless Widget, Widget Tree, Build Context, LifeCycle long@techmaster.vn
  • 5. Widget tree Widget Tree là cấu trúc đại diện cho toàn bộ ứng dụng. tương tự với DOM trong trang web. Vai trò như Mục lục của cuốn sách, widget tree thể hiện toàn bộ các widget được dùng, vị trí và thứ tự các widget được đặt.
  • 6.
  • 7. Element Tree & Render Object
  • 8. 1- gọi hàm runApp(), Flutter build một Widget tree chứa các widget. 2- Các element được tạo bởi các widget. Sau khi widget được built, framework gọi hàm Widget.createElement(this). Element Tree & Render Object
  • 9. 3- Element gọi phương thức createRenderObject() để tạo ra các RenderObject, các RenderObject này cấu thành nên Render Tree. 4- Mỗi một Element tham chiếu đến một Widget và một RenderObject. Element Tree & Render Object
  • 10. Sao lại cần đến 3 tree? Element không giữ cấu hình widget, nhưng có thể nhìn cấu hình chi tiết thông qua việc tham chiếu đến widget tương ứng. RenderObject chứa toàn bộ logic để rendering widget, nên nó khá nặng nề để khởi tạo. >> Khi widget trong tree thay đổi, Flutter sử dụng Elements để so sánh widget mới với RenderObject đã tồn tại, -> nếu type của widget không đổi, Flutter sẽ không tạo lại cái RenderObject nặng nề đó, thay vào đó chỉ cập nhật mutable configuration. Widget rất nhẹ để khởi tạo, nên nó sẽ được dùng để mô tả state hiện tại.
  • 11. Lưu ý StateObject thực sự được quản lý bởi element, không phải widget. Flutter render dựa trên Elements và state object, chứ nó không liên quan gì đến widget.
  • 12. Ví dụ Element và RenderObject Đảo nút nhấn -> chỉ đảo text và chức năng, màu nền không thay đổi VÍ DỤ: https://bit.ly/337DUAd
  • 13. Đa phần các Widget extends từ Stateless hoặc Stateful Widget
  • 14. State State - Trạng thái: đại diện cho dữ liệu thay đổi trong vòng đời ứng dụng. 📌 Khi dữ liệu của stateful 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.
  • 15. Stateless Widget Immutable – bất biến Stateless Widget không thể re-run build() khi các thuộc tính của nó thay đổi.
  • 16. Không có state. Không chấp nhận sự thay đổi bên trong nó. Đối với sự thay đổi từ widget cha thì nó sẽ thụ động thay đổi theo. Stateless Widget
  • 17. Build method How to render a widget? Flutter gọi tới build method trong widget, nó trả về một Widget object chứa thông tin cấu hình để Flutter render.
  • 18. Khi nào build method Stateless được thực hiện ? ● Lần đầu tiên widget được thêm vào tree. ● Khi widget cha thay đổi. ● Khi các giá trị từ nguồn khác thay đổi Ví dụ một Widget kế thừa sẽ phụ thuộc vào các thay đổi từ nơi nó kế thừa https://api.flutter.dev/flutter/widgets/StatelessWidget- class.html
  • 19. Stateful Widget Thường được sử dụng khi giao diện cần thay đổi linh hoạt ● Người dùng tương tác gì đó trên giao diện ● Nhận dữ liệu từ nguồn khác ● Thay đổi theo thời gian
  • 20. Stateful Widget ● Một class extends từ StatefulWidget. ● Một Class extends từ State
  • 23. State và data trong Stateful Thường được hiểu là dữ liệu bên trong widget ● Data trong Flutter Widget là immutable - bất biến. Widget có thể lưu trữ data và data đó không đổi. ● Stateful Widget được liên kết với một State Object , Object này mới là nơi chứa dữ liệu mutable data , bản thân Widget không chứa mutable data. ⚠️ Stateful Widget có chứa mutable data ?
  • 24. setState() ❓Tại sao cần gọi hàm setState(() {}) trong Stateful Widget mà không set thẳng value? Nếu không có setState(() {}), Widget vẫn thay đổi giá trị thuộc tính nhưng nó sẽ không re-run build() method, vì vậy, việc thay đổi đó ko phản ánh lên màn hình. setState là như một trigger thông báo cho Flutter re-run build() method.
  • 26. StatefulWidget lifecycle Ví dụ : https://bit.ly/2qgVYuv
  • 27. StatefulWidget lifecycle createState(): Khi xây dựng StatefulWidget, ngay lập tức gọi createdState(). initState(): Để khởi tạo state, chỉ được gọi một lần khi widget được tạo. setState như một trigger thông báo cho Flutter re- run build() method
  • 28. StatefulWidget lifecycle didChangeDependencies : có thể được gọi một lần sau initState, cũng có thể được gọi lại trong Lifecycle Tại thời điểm này, State được coi là "dirty", đó là cách Flutter theo dõi những widget nào cần được rebuild. Bất cứ khi nào một state object cần rebuild, nó tự đánh dấu là "dirty".
  • 29. StatefulWidget lifecycle didChangeDependencies : có thể được gọi một lần sau initState, cũng có thể được gọi lại trong Lifecycle Tại thời điểm này, State được coi là "dirty", đó là cách Flutter theo dõi những widget nào cần được rebuild. Bất cứ khi nào một state object cần rebuild, nó tự đánh dấu là "dirty".
  • 30. StatefulWidget lifecycle build() xây dựng đầy đủ state object. sau build(), state được đánh dấu là "clean". -> lifecycle hoàn thành một “single track”.
  • 31. StatefulWidget lifecycle setState() đánh dấu state ở trạng thái “dirty”, thực hiện re-run lại phương thức build() Một widget cha ở trên có thể yêu cầu xây dựng lại widget đang thao tác. Nếu vị trí sẽ được rebuild với cùng loại và khóa widget, thì sẽ gọi didUpdateWidget(old widget). state cũng bị đánh dấu là “dirty”
  • 32. StatefulWidget lifecycle disposed() xóa state object ra khỏi tree, xóa tài nguyên, widget không bao giờ được gọi lại
  • 33. State nếu setState() cha được gọi -> vẽ lại tất cả con
  • 34. State buộc phải gọi setState() từ cha hoặc call-back
  • 35. Build Context Mọi widget trong Flutter được tạo từ một build() method và method này đều lấy BuildContext làm đối số (argument).
  • 36. Build Context Context tham chiếu đến vị trí của Widget trong cấu trúc tree. Một context chỉ thuộc về một widget. Mỗi Widget có phương thức build() và context riêng. BuildContext là cha của widget được trả về.
  • 37. Build Context Ví dụ: https://bit.ly/357pwtc Ví dụ về BuildContext tham chiếu đến vị trí của widget WithBuildContext -> từ đó dùng method ancestor lấy widget cha (cụ thể là Column) -> hoặc lấy các widget xung quanh
  • 38. Build Context Nếu một widget chứa các widget con, context của widget cha sẽ trở thành parent context của các context widget con.
  • 39. Build Context BuildContext thực sự hữu ích khi bạn muốn truyền dữ liệu xuống mà không phải gán thủ công cho mọi vật dụng

Editor's Notes

  1. Trên một cây thành phần Widget tiêu biểu, khi setState() được gọi từ các thành phần cha, nó sẽ vẽ lại tất cả thành phần con cháu. Điều này gây ra sự cập nhật không cần thiết cho những thành phần con không thay đổi trạng thái, nói đơn giản hơn là bạn không thể chỉ định một thành phần con nào đó để cập nhật lại trạng thái. BLoC Architecture, MobX, Scoped Model và Redux.
  2. BLoC Architecture, MobX, Scoped Model và Redux.