Trung Tâm Sửa Tủ Lạnh Uy Tín Tại Nhà Hà Nội 2022

Trước khi đi vào tìm kiếm và so sánh giữa các Kiến trúc khi triển khai trên Flutter – Dart để xem Kiến trúc nào sẽ phù hợp, tối ưu, thuận tiện, dễ triển khai … hơn thì mình xin phép kể về hành trình và lý do mình viết bài viết này để chia sẻ và mong muốn nhận được góp ý của mọi người.
Với nền tảng đã làm Android/IOS Native nên Team mình tự tin nhận 1 dự án A phát triển bằng Flutter – Dart để vừa làm và vừa học. Do Team mình ít người và cũng không có ai có kinh nghiệm với Flutter trước đó nên team chọn hướng tiếp cận theo phong cách Free Style. Sau khi hoàn thành dự án A, mình cũng nhận thấy rất nhiều nhược điểm của Free Style ảnh hưởng trực tiếp đến chất lượng sản phẩm, trải nghiệm người dùng, khả năng fix bug và maintain …. Nên mình mới tìm kiếm 1 Kiến trúc nào đó tối ưu và phù hợp với Flutter. Mình tìm thấy 2 gợi ý được nhiều người nhắc đến: Bloc, MVVM (Nếu còn cái nào hay hơn nhờ mọi người góp ý giúp mình nhé ).
Chính vì thế mình đã nghiên cứu và cùng chia sẻ với mọi người về những gì mình đọc và hiểu được trong quá trình nghiên cứu. Ở bài viết này mình sẽ nói đến BLoC và MVVM + GetX (2 cái mà mình được nghe nhiều nhất trong các diễn đàn)

BLoC và MVVM là gì?

  1. BLoC Pattern (Business Logic Component) mục đích là tách code business logic ra khỏi UI thay vì code gộp chung cả logic và UI vô cùng 1 file, để sau này spec mới có yêu cầu sửa code business logic hay sửa UI sẽ dễ dàng sửa hơn.
  2. MVVM (Model – View – View Model) xây dựng một mô hình mà View Model tương tác với Model để cung cấp dữ liệu cho View.

Sau khi đọc xong lý thuyết thì mình thấy MVVM và BLoC khá giống nhau về bản chất (đều tách logic ra view) vậy chúng khác nhau ở điểm nào?
Mình có làm sample và tìm đọc 1 số bài so sánh giữa BLoC & MVVM + GetX thì thấy điểm mấu chốt khác nhau chủ yếu là Tương tác giữa BLoC/Controller và View:

  • BLoC và View giao tiếp với nhau thông qua các State và Event. BLoC không để lộ bất kỳ phương thức nào ra ngoài.
    • BLoC thông báo cập nhật cho View qua emit()
      emit(SuccessState(data));
    • View thông báo cập nhật data cho BLoC qua add()
      BlocProvider.of(context).add(LoginUsernameChanged(text)
  • Controller và View giao tiếp trực qua instance của Controller
    • View đăng kí lắng nghe thay đổi của Controller để cập nhật View
      var userName = Constants.EMPTY.obs; userName.value = text;
    • View thông báo cập nhật data cho Controller qua api của Controller
      controller.setUserName(value);

Một điểm độc lạ mê hoặc như là BLoC tiếp xúc trải qua những Event không riêng gì với UI mà còn với những phần khác nhau của ứng dụng. ví dụ : nó sẽ nhận được một Event sau khi nhận được thông tin về firebase hoặc khi data trong DB biến hóa .

=> Sau khi điều tra và nghiên cứu và demo BLoC ( sử dụng Flutter Bloc Plugin ) và MVVM + GetX thì thực sự có tình cảm với BLoC hơn, nhưng nếu để nên bàn cân mình cũng không thấy giữa MVVM và BLoC có gì độc lạ nhiều .
Xem thêm : Sửa Tủ Lạnh Tại Gia Lâm Uy Tín Nhất 96 Nguyễn Văn Cừ

Xem thêm: Sửa Tủ Lạnh Tại Quận Cầu Giấy Địa Chỉ Tâm Đắc Nhất

Bạn đang đọc : BLoC Hay MVVM + GetX – Đâu là “ Chân Lý ” cho tăng trưởng dự án Bất Động Sản bằng Flutter ? – AI Design – Thiết kế web theo nhu yếu tại Hồ Chí Minh

GetX liệu có “Hoàn Hảo” không?

Nhân tiên, Mình cũng có đọc và nghe mọi người bảo GetX chỉ nên dùng với những dự án Bất Động Sản Bất Động Sản Nhà Đất nhỏ, làm nhanh còn những dự án Bất Động Sản Bất Động Sản Nhà Đất lớn hơn cần maintain liên tục thì nên sử dụng BLoC. Mình cũng đã mày mò và thấy 1 số nguyên do sau khiến 1 số người ngại sử dụng GetX :

  • GetX chứa rất nhiều thứ như State Management, DI, Navigate, Internationalization, Change Theme, Network, Database … chính vì thế nó lại là nhược điểm vì lắm ứng dụng bạn không cần nhiều module đến thế và chúng cũng dễ bị out of date.
  • GetX sử dụng Static Context
  • Module get_connect hỗ trợ cả API REST và GraphQL trong khi một dự án thự tế không cần nhiều như thế
  • Thỉnh thoảng sẽ gặp vấn đề với Hot Reload do cơ chế Dependency Injection bên trong của GetX dẫn đến việc GetXController có thể bị remove khi chúng t Hot Reload
  • Nhiều Code không có hoặc thiếu tài liệu
  • Khó khăn trong việc code UnitTest
  • Tỉ lệ Unit Test và Widget Testing trong source code thấp

BLoC Base Source

Mình có để link san sẻ về Demo Base BLoC tại đây

Nếu mình có nhận xét cái gì sai hoặc thiếu sót thì nhờ mn góp ý nhé.

Tài liệu tìm hiểu thêm

Có thể bạn quan tâm
Alternate Text Gọi ngay
XSMB