# flutter_dva_hooks **Repository Path**: flutter_dva/flutter_dva_hooks ## Basic Information - **Project Name**: flutter_dva_hooks - **Description**: flutter_dva 的 hooks写法 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-03-29 - **Last Updated**: 2026-05-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # flutter_dva_hooks [![pub package](https://img.shields.io/pub/v/flutter_dva_hooks.svg)](https://pub.dev/packages/flutter_dva_hooks) Flutter Dva Hooks — 基于 `flutter_hooks` 封装的 Flutter Dva 状态管理 Hook 库,让你在 Flutter 中以声明式、函数式的方式使用 Dva 状态管理。 [English](README.md) | [中文](README_CN.md) --- ## 📦 安装 在 `pubspec.yaml` 中添加依赖: ```yaml dependencies: flutter_dva_hooks: ^1.0.8 ``` 或者通过命令行安装: ```bash flutter pub add flutter_dva_hooks ``` --- ## ✨ 功能特性 | Hook | 说明 | |------|------| | `useDvaConnect` | 监听 Store 状态变化并自动更新页面,同时获取 Props 和 Store | | `useDvaProps` | 仅获取 Props,不监听 Store 变化 | | `useDvaStore` | 仅获取 Store 实例,不监听 Store 变化 | --- ## 🚀 使用指南 ### 1. `useDvaConnect` — 完整连接,自动刷新 自动订阅 Store 状态变化,在指定状态发生变化时触发 Widget 重建。支持命名空间过滤、自定义状态映射和自定义更新策略。 ```dart import 'package:flutter_dva_hooks/flutter_dva_hooks.dart'; final connect = useDvaConnect( namespace: 'counter', // 监听指定命名空间 listenKeys: ['count'], // 仅监听特定 key mapState: (rootState) { // 自定义状态映射 return { 'counter': rootState['counter'], }; }, shouldUpdate: (lState, nState) { // 自定义更新判断策略 return lState.updateAt != nState.updateAt; }, didMounted: () { // 组件挂载后的回调 print('组件已挂载'); }, ); // 获取 Props connect.props?.dispatch(Type('increment')); connect.props?.history; // 获取 Store connect.store?.subscribe((lState, nState) {}); connect.store?.rootState; // 获取映射后的状态 connect.state?['counter']; ``` ### 2. `useDvaProps` — 仅获取 Props 当你只需要 Props(dispatch、history 等),而不需要订阅状态变化时使用。 ```dart final props = useDvaProps(namespace: 'counter'); // 派发 Action props.dispatch(Type('increment')); // 导航 props.history; ``` ### 3. `useDvaStore` — 仅获取 Store 当你只需要 Store 实例,而不需要订阅状态变化时使用。 ```dart final store = useDvaStore(); // 获取根状态 store.rootState; // 订阅状态变化 store.subscribe((lState, nState) { // 处理状态变更 }); ``` --- ## 📚 API 参考 ### useDvaConnect 参数 | 参数 | 类型 | 说明 | |------|------|------| | `namespace` | `String?` | 监听的命名空间 | | `listenKeys` | `List?` | 仅监 namespace 下特定状态 key | | `mapState` | `MapState?` | 自定义状态映射函数,从 rootState 映射 | | `shouldUpdate` | `ShouldUpdate?` | 自定义是否需要更新页面的判断函数 | | `didMounted` | `VoidCallback?` | 组件首次挂载并初始化状态后的回调 | ### 返回值类型 - **DvaConnect**: 包含 `props`、`state` 和 `store` - **Props**: 包含 `dispatch`、`history` 及命名空间相关属性 - **Store**: `flutter_dva` 提供的 Store 实例 --- ## 🔗 依赖 - [flutter_hooks](https://pub.dev/packages/flutter_hooks) — Flutter Hooks 实现 - [flutter_dva](https://pub.dev/packages/flutter_dva) — Flutter Dva 状态管理 --- ## 📄 开源协议 本项目基于 [MIT License](LICENSE) 开源。 --- ## 🌐 相关链接 - [Pub.dev 发布页](https://pub.dev/packages/flutter_dva_hooks) - [代码仓库](https://gitee.com/flutter_dva/flutter_dva_hooks)