Edu DaLatHub
  • Trang chủ
  • Flutter
  • WordPress Plugin
  • GoLang
  • ReactJS
  • NodeJS
  • Networking
    • Basic Networking
      • ARP
      • ICMP
      • TCP/UDP
    • Routing & Switching
      • RIP
      • OSPF
      • EIGRP
      • Redistribution
      • TSHOOT
      • WAN
Liên hệ

  • By  tinhphan
  • 0 comments
  • Tháng Hai 10, 2020

Provider Architecture Part 1

Trong quá trình phát triển một phần mềm di động có tính mở rộng cao, các nhà phát triển thường hay chọn cho mình một kiến trúc (State management) phù hợp để triển khai ứng dụng.

Hiện tại trong thế giới phát triển phần mềm cho di động, website, desktop… có rất nhiều các kiến trúc được các công ty, nhà phát triển đưa ra. Phổ biến như N-layer, MVP, MVVM…

Về phía Flutter củng không kém cạnh khi củng được Google và các bên thứ ba phát triển một số kiến trúc như là ScopeModel, Rxdart, Redux, MobX, BloC, Provider.

Provider là một package do cộng đồng phát triển, rất gần với Scope model nhưng đơn giản, mạnh mẽ hơn và được chính Google khuyến khích sử dụng.

Trong bài viết này (part-1), mình sẽ giới thiệu Provider cho Flutter App

Nội dung:

  1. Pragmatic State Management sử dụng  Provider

Pragmatic State Management sử dụng Provider

Cài đặt Provider package vào flutter project

Vào trong file pubspec.yaml

Chạy lệnh “flutter pub get” để update các dependencies:

Page và Page Model

Mỗi một màn hình trong Flutter được định nghĩa là một page hoặc chúng ta củng có thể gọi là View.

Chúng ta sẽ sử dụng demo mặt định là đếm số của Flutter để chuyển đổi thành Provider.

Mặt định, chúng ta sẽ sử dụng setState để quản lý trạng thái của counter

Với cách sử dụng setState, việc quản lý các trạng thái và xử lý logic của các page sẽ trở nên phức tạp nếu cần phải quản lý nhiều làm cho code bị phình lên. Đồng thời, thu hẹp khả năng mở rộng của ứng dụng.

ChangeNotifier

ChangeNotifier là một lớp được tạo ra để thông báo các thay đổi bên trong nó bằng Voidcallback.

Tạo ra một file tên là counter_model.dart để quản lý trạng thái counter

Cho biến _counter thay đổi bằng hai hàm là incrementCounter và decrementCounter.

Các bạn đang thấy sự xuất hiện của hàm notifyListenners(). Hàm này được sử dụng cho Page nào lắng nghe model này biết rằng đã có sự thay đổi trạng thái mà nó đang quản lý và sau đó hàm build sẽ được gọi lại để thực hiện thay đổi widget đó.

Page chỉ bao gồm model và các widget

Tạo ra file couter_page.dart để xây dựng layout đó.

Chúng ta bắt đầu xây dựng Widget và việc lắng nghe model.

ChangeNotifierProvider và Consumer

ChangeNotifierProvider được sinh ra để lắng nghe ChangeNotifier. Các thành phần con sẽ được rebuild khi hàm notifyListener() ở ChangeNotifier được gọi.

Consumer là một widget cho phép bạn lấy ra được model mà bạn muốn từ phía ChangeNotifierProvider. Consumer rất hữu ích trong việc lấy ra model của đối tượng đó để quả lý nhất là được sử dụng trong children con của page. Mình sẽ có bài viết chi tết hơn về cách sử dụng này!

Vừa rồi, chúng ta đã xây dựng được layout cho page. Trong đoạn code phía trên, trong builder chúng ta có: builder: (context, model, child)

Model ở đây là đối tượng CounterModel chứa counter và các hàm xử lý. Thực hiện việc xử lý các event như sau:

Hiển thị giá trị:

Xử lý event

Kết quả:

Result
Tags:
Flutter, Uncategorized

Leave a Comment Cancel Reply

Your email address will not be published.*

Website này sử dụng Akismet để hạn chế spam. Tìm hiểu bình luận của bạn được duyệt như thế nào.

Don’t compare yourself with anyone in this world…if you do so, you are insulting yourself.

Bill Gates

When something is important enough, you do it even if the odds are not in your favor.

Elon Musk

Bài viết mới

  • Lorem Ipsum Sample Content123
  • Lorem Ipsum Sample Content
  • Hello world
  • Hello world
  • Hello world
  • Wide area networks (Phần 2)
  • Wide area networks (Phần 1)
  • Redistribution (Phần Cuối)
  • Redistribution (Phần 1)
  • OSPF – Open Shortest Path First (Phần Cuối)

Nơi chia sẻ về tin công nghệ, các kinh nghiệm lập trình. Xây dựng các khoá đào tạo lập trình, mạng, tin học văn phòng...

Thông tin liên hệ

  • 2/9 Phạm Ngũ Lão, Phường 3, Đà Lạt
  • 0865802659
  • info@dalathub.com

Copyright @ 2022 Edu DaLatHub