패키지, 저장소 및 앱 카테고리 검색

패키지 상세v0.2.4

stacked_hooks

stacked 패키지를 사용할 때 훅을 활용하는 데 도움이 되는 클래스

AndroidiOSWebmacOSWindowsLinux
30일 다운로드
6.8천
좋아요
70
Pub 점수
140

패키지 설치

flutter pub add stacked_hooks

패키지 개요

공개 정보를 바탕으로 생성한 선택 가이드입니다.

Stacked Hooks는 Stacked 아키텍처를 확장하여 React 스타일의 훅을 상태 관리 워크플로에 원활하게 통합할 수 있도록 도와주는 Flutter 패키지입니다. 이는 개발자가 Stacked의 뷰 모델 내에서 useState, useEffect, useStream과 같은 훅을 사용할 수 있게 해주며, 더 깔끔하고 모듈화된 코드를 쓸 수 있도록 합니다. 이미 Stacked 패키지를 사용하는 개발자를 위해 설계되었으며, 기존 로직을 완전히 재작성할 필요 없이 UI 컴포넌트에서 상태 처리를 간소화합니다. 이 패키지는 모든 주요 플랫폼을 지원하여 Android, iOS, Web, macOS, Windows, Linux에서 일관된 동작을 보장합니다.

사용 사례

  • 최소한의 보일러플레이트로 반응형 UI 만들기
  • 스택된 뷰 모델에서 로컬 상태 관리
  • useEffect와 유사한 로직으로 부작용을 단순화하기
  • 스트림 및 비동기 작업 통합
  • 재사용 가능한 상태를 가진 위젯 만들기
  • 복잡한 뷰의 유지보수성 향상

주요 기능

  • Stacked용 내장 훅 유틸리티
  • useState, useEffect, useStream 지원
  • Stacked 아키텍처와의 원활한 통합
  • 크로스 플랫폼 호환성
  • 최소한의 설정 필요
  • 타입 안전하고 직관적인 API

적합한 대상

  • Stacked 패키지를 사용하는 개발자
  • 더 깔끔한 상태 관리를 원하는 팀
  • 복잡한 UI 로직을 가진 Flutter 앱
  • 반복 코드를 줄이려는 프로젝트
  • React Hooks에 익숙한 사람
  • 다중 플랫폼을 대상으로 하는 앱

고려 사항

  • Stacked 패키지 필요
  • 스택 기반 프로젝트에 한정
  • 새로운 훅 사용자에게는 학습 곡선이 필요할 수 있습니다
  • 스택되지 않은 아키텍처에는 적합하지 않습니다
  • 중소에서 대규모 앱에서 가장 잘 사용됨
  • Dart의 비동기 및 스트림 처리에 의존합니다

원본 README

연결된 소스 저장소의 README 원문 스냅샷입니다. 최신 내용은 저장소에서 확인하세요.

Stacked Hooks

This package contains widgets that allow you to use the Flutter Hooks package with the StackedView in the Stacked architecture.

StackedHookView

The StackedView is an implementation of a widget class that returns a value provided by Provider as a parameter in the build function of the widget. This allows for easier consumption and use of ViewModel without boilerplate. The StackedHookView allows you to use this widget and make use of Flutter Hooks inside the build function. This is very useful when you want to use TextEditing controllers and you're implementing this architecture.

// View that creates and provides the viewmodel
class StackedHookViewExample extends StackedView<HomeViewModel> {
  const StackedHookViewExample({Key key}) : super(key: key);

  @override
  Widget builder(BuildContext context, HomeViewModel model, Widget? child) {
    return Scaffold(
      body: Center(child: _HookForm()),
    );
  }

  @override
  HomeViewModel modelBuilder(BuildContext context) {
    return HomeViewModel();
  }
}

// Form that makes use of the ViewModel provided above but also makes use of hooks
class _HookForm extends StackedHookView<HomeViewModel> {
  @override
  Widget buildStackedView(BuildContext context, HomeViewModel model) {
    final title = useTextEditingController();
    return Column(
      mainAxisSize: MainAxisSize.min,
      children: <Widget>[
        Text(model.title),
        TextField(controller: title, onChanged: model.updateTitle),
      ],
    );
  }
}

// ViewModel
class HomeViewModel extends BaseViewModel {
  String title = 'default';

  void updateTitle(String value) {
    title = value;
    notifyListeners();
  }
}

카테고리

의존성

의존성 목록 2 개

소스 저장소

이 패키지를 사용하는 프로젝트