パッケージ、リポジトリ、アプリカテゴリを検索

パッケージ詳細v1.8.2

route_observer_mixin

RouteObserveMixin は、didPush/didPop/didPushNext/didPopNext への簡単なアクセスを提供します。

AndroidiOSWebmacOSWindowsLinux
30日間ダウンロード
5660
いいね数
20
Pub ポイント
160

パッケージをインストール

flutter pub add route_observer_mixin

パッケージ概要

公開情報に基づく選定ガイドです。参考としてご利用ください。

RouteObserveMixin は、Flutter のユーティリティミックスインであり、didPush、didPop、didPushNext、didPopNext などのルートライフサイクルイベントの処理を簡素化します。手動でルートを管理したりグローバルオブザーバーを使用したりせずに、ウィジェットがナビゲーション変更に反応できるようにします。ナビゲーションフローに関連する状態管理や UI 更新に最適で、複数プラットフォームにおける複雑なルーティングシナリオでの相互作用をスムーズにします。

用途

  • ナビゲーション状態の変更の処理
  • ルート遷移時のUIの更新
  • プッシュ/ポップイベント中の状態の管理
  • ルートの変更に伴うデータの同期
  • カスタムナビゲーション動作の実装

主な機能

  • 既存のウィジェットとの簡単な統合
  • 自動ライフサイクルイベントコールバック
  • すべての主要なFlutterプラットフォームをサポートしています
  • 最小限のボイラープレートコード
  • ナビゲーションロジックの明確な分離

適している対象

  • 複雑なナビゲーションフローを使用する開発者
  • ルート認識付きの状態管理
  • クロスプラットフォームのFlutterアプリ
  • ナビゲーションコンテキストが必要なウィジェット

注意事項

  • ウィジェットクラスでミックスインの使用が必要です
  • ルートライフサイクルイベントのみに制限
  • 完全なナビゲーション管理を置き換えない
  • 状態付きウィジェットと併用するのが最適
  • シンプルなナビゲーションのシナリオには適していません

元の 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 件

ソースリポジトリ

このパッケージを使用しているプロジェクト

データはまだありません。