搜尋套件、儲存庫與 APP 分類

套件詳情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 項

原始碼儲存庫

使用此套件的專案

暫無相關資料。