搜索插件、代码仓与 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 项

源码仓库

使用此插件的项目

暂无相关数据。