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

패키지 상세v1.8.2

route_observer_mixin

RouteObserveMixin은 didPush/didPop/didPushNext/didPopNext에 대한 간편한 접근을 제공합니다.

AndroidiOSWebmacOSWindowsLinux
30일 다운로드
5.7천
좋아요
20
Pub 점수
160

패키지 설치

flutter pub add route_observer_mixin

패키지 개요

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

RouteObserveMixin은 Flutter 유틸리티 믹스인으로, didPush, didPop, didPushNext 및 didPopNext와 같은 라우트 수명 주기 이벤트를 간소화합니다. 위젯이 라우트를 수동으로 관리하거나 전역 관찰자를 사용하지 않고도 네비게이션 변경에 반응할 수 있게 해줍니다. 네비게이션 흐름과 연결된 상태 관리 및 UI 업데이트에 이상적이며, 여러 플랫폼에서 복잡한 라우팅 시나리오의 상호작용을 간편하게 만듭니다.

사용 사례

  • 내비게이션 상태 변경 처리
  • 경로 전환 시 UI 업데이트
  • 푸시/팝 이벤트 동안 상태 관리
  • 경로 변경과 데이터 동기화
  • 사용자 지정 탐색 동작 구현

주요 기능

  • 기존 위젯과의 간편한 통합
  • 자동 수명 주기 이벤트 콜백
  • 모든 주요 플러터 플랫폼을 지원합니다
  • 최소한의 보일러플레이트 코드
  • 네비게이션 로직의 명확한 분리

적합한 대상

  • 복잡한 탐색 흐름을 사용하는 개발자
  • 경로 인식을 갖춘 상태 관리
  • 크로스 플랫폼 플러터 앱
  • 네비게이션 컨텍스트가 필요한 위젯

고려 사항

  • 위젯 클래스에서 믹스인 사용이 필요합니다
  • 경로 수명 주기 이벤트에만 제한됨
  • 전체 네비게이션 관리를 대체하지 않습니다
  • 상태를 가진 위젯과 함께 사용하는 것이 가장 좋습니다
  • 간단한 탐색 시나리오에 적합하지 않습니다

원본 README

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

route_observer_mixin

Gif

RouteObserveMixin provides easy access to didPush/didPop/didPushNext/didPopNext.

Usage

1. Wrap MaterialApp with RouteObserverProvider.
void main() {
  runApp(
    MultiProvider(
      providers: [
        // 1. Wrap MaterialApp with RouteObserverProvider.
        RouteObserverProvider(),
        ChangeNotifierProvider(create: (context) => Logger())
      ],
      child: const App(),
    ),
  );

  // Of course, this is also ok.
  // I demonstrated that [MultiProvider] can be used for RouteObserverProvider👍

  /*
  runApp(
    RouteObserverProvider(
      child: App(),
    ),
  );
  */
}
2. Pass RouteObserverProvider.of(context) to navigatorObservers.
class App extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      // 2. Pass RouteObserverProvider.of(context) to navigatorObservers.
      navigatorObservers: [RouteObserverProvider.of(context)],
      home: const APage(),
    );
  }
}
3. Add with RouteAware, RouteObserverMixin to State and override RouteAware methods.
class APage extends StatefulWidget {
  const APage({Key key}) : super(key: key);

  @override
  _APageState createState() => _APageState();
}

// 3. Add `with RouteAware, RouteObserverMixin` to State and override RouteAware methods.
class _APageState extends State<APage> with RouteAware, RouteObserverMixin {

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('A Page'),
      ),
      body: Center(
        child: RaisedButton(
          onPressed: () {
            Navigator.of(context).push<void>(
              MaterialPageRoute(
                builder: (context) => const BPage(),
              ),
            );
          },
          child: const Text('B Page'),
        ),
      ),
    );
  }

  /// Called when the top route has been popped off, and the current route
  /// shows up.
  @override
  void didPopNext() { }

  /// Called when the current route has been pushed.
  @override
  void didPush() { }

  /// Called when the current route has been popped off.
  @override
  void didPop() { }

  /// Called when a new route has been pushed, and the current route is no
  /// longer visible.
  @override
  void didPushNext() { }
}

Example

  • https://github.com/mono0926/route_observer_mixin/tree/master/example

카테고리

의존성

의존성 목록 4 개

소스 저장소

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

아직 데이터가 없습니다.