이나주니 2023. 2. 14. 09:57
반응형

Bloc

😶 Bloc 패턴은 UI와 비즈니스 로직의 분리를 해줌

  • 원래 Scaffold 위젯을 통해 많은 위젯이 제어되는데 제어되는 과정 속에서 모든 하위 위젯들의 불필요한 업데이트가 진행된다. 이게 단순한 앱일 경우에는 체감으로 느끼지 못할 수 있지만 무거운 앱일수록 사용자가 불편하게 느낄 정도로 앱이 느려지는 것을 확인할수 있음
  • Bloc 패턴을 사용하게 되면 UI와 비즈니스 로직을 분리하고 상태 관리를 하게 된다면 제어해주고 싶은 위젯만을 따로 제어해 효율적이고 깔끔한 코드를 설계할 수 있게 될 것이고 이로 인해 퍼포먼스 측면, 유지보수 측면에서도 큰 도움을줌
    하지만 Bloc 패턴의 경우 간단한 로직 하나 구현하는데도 최소 4개의 클래스를 작성해야 하는 불편함이 있다. 그래서 등장한 것이 Provider이다

Provider

😶 Provider 는 Bolc 패턴보다 쉽게 적용할 수 있어, 데이터 공유와 로직의 분리를 좀 더 간단하게 할 수 있다

dependencies:
provider: ^6.0.1

Provider에서는 상태 관리를 직접 하지 않고 ChangeNotifier가 스스로 상태 관리를 한다.

결국 두가지 개념은 상태 관리를 목적으로 하고 있으며, UI와 비즈니스 로직을 분리하는 목적에서 동일하다. 그러나 Provider 를 쓰면 더 간단하게 목적을 구현할 수 있다. 구글에서는 중규모 프로젝트는 Provier 를, 대규모 프로젝트는 Bloc 패턴을 추천하고 있다.

 

Get X

https://github.com/jonataslaw/getx/blob/master/README.ko-kr.md#Get%EC%97%90-%EB%8C%80%ED%95%98%EC%97%AC 

 

GitHub - jonataslaw/getx: Open screens/snackbars/dialogs/bottomSheets without context, manage states and inject dependencies eas

Open screens/snackbars/dialogs/bottomSheets without context, manage states and inject dependencies easily with Get. - GitHub - jonataslaw/getx: Open screens/snackbars/dialogs/bottomSheets without c...

github.com

Flutter를 위한 매우 가볍고 강력한 라이브러리이며 강력함을 뒷받침 하고 있는 3가지 기본 원칙이 있으며 다음과 같습니다.

 

😶 첫째. 생산성

  • 같은 기능도 더욱더 편하고 간결하게 표현이 가능합니다.
  • 컨트롤러들을 사용하고 반환시켜주는 처리를 신경 쓰지 않아도 알아서 GetX에서 사용되지 않을 때 제거해주기 때문에 개발자분들은 더욱더 개발에만 신경 쓸 수 있습니다.

😶 둘째. 성능

- GetX는 성능과 최소한의 리소스 소비에 중점을 둡니다.

  • GetX는 Streams나 ChangeNotifier를 사용하지 않습니다.

- 최소의 재 빌드를 위해 똑똑한 알고리즘을 적용하기 위해, GetX는 상태가 변했는지 확인하는 comparator를 사용합니다.

😶 셋째. 조직화

  • GetX는 화면, 비즈니스 로직, 종속성 주입 및 내비게이션을 완전히 분리하여 관리할 수 있습니다.

-  GetX는 자체 종속성 주입 기능을 사용하여 DI를 뷰에서 완전히 분리하기 때문에 다중 Provider를 통해 위젯 트리에서 컨트롤러/모델/블록으로 주입할 필요가 없습니다

- GetX를 사용하면 기본적으로 클린 코드를 가지게 되어 애플리케이션의 각 기능을 쉽게 찾을 수 있습니다. 이것은 유지 보수를 용이하게 하며 모듈의 공유가 가능하고 Flutter에서는 생각할 수 없었던 것들도 전부 가능합니다.

 

GetX를 사용하기 위한 사전 세팅

dependencies:

get: ^4.6.5

이제 GetX에서 프로젝트의 모든 것을 관리할 수 있도록 설정하려면 MaterialApp을 사용하는 대신 앞에 Get만 추가해주면 된다.

 

GetX가 말하는 세 가지 주요점

첫째. 상태 관리

GetX는 두 가지 상태 관리자가 있습니다: 단순 상태 관리자(GetBuilder라고 함)와 반응형 상태 관리자(GetX/Obx)

둘째. 라우트 관리

셋째. 종속성 관리

종속성 인스턴스 선언 방법에는 총 4가지 방식이 있습니다.

  • Get.put()
  • Get.lazyPut()
  • Get.putAsync()
  • Get.create()
    • 페이지 이동 // 기본방식 Navigator.of(context).pushNamed("/first"); // Getx 방식 Get.toNamed("/first");
    • 현재/이전 페이지 삭제 후 이동 Get.offNamed("/second"); Get.offAllNamed("/");
반응형