HarmonyOS鸿蒙Next中fish-redux插件适配
HarmonyOS鸿蒙Next中fish-redux插件适配 问题描述: Flutter插件 fish-redux : Flutter 是一个基于 Redux 状态管理的集成式 Flutter 应用程序框架, 鸿蒙端缺少适配
问题现象: Flutter插件 fish-redux : Flutter 是一个基于 Redux 状态管理的集成式 Flutter 应用程序框架, 鸿蒙端缺少适配
版本信息: Flutter ohos分支
插件链接: https://github.com/alibaba/fish-redux

更多关于HarmonyOS鸿蒙Next中fish-redux插件适配的实战教程也可以访问 https://www.itying.com/category-93-b0.html
开发者您好,
fish-redux测试可以在Flutter 3.7.12 ohos Dart 2.19.6,上正常运行
通过在pub仓搜索并下载下源码后,我们可以按照以下的方法判断三方库是否是纯Dart库:
- 当目录中有其他平台目录时,且存在ohos目录,那么该库不是纯Dart库,且已适配ohos,可以直接使用。
- 当目录中有其他平台目录时,且不存在ohos目录,那么该库不是纯Dart库,可以将该库拿到OpenHarmony平台已兼容库packages三方库列表中查询是否已适配,如果查询不到结果则无法使用。
- 当目录中没有其他平台目录时,且全局搜索Dart代码中存在Platform判断是其他平台的代码,那么该库不是纯Dart库,需要针对这部分代码进行适配ohos相关代码。
- 当目录中没有其他平台目录时,且全局搜索Dart代码中不存在Platform判断是其他平台的代码,那么该库是纯Dart库。
- 判断完该三方库是纯Dart库后,仍然需要通过pubspec.yaml查看其间接依赖的三方库,再参考上述步骤继续分析这些间接依赖的库是否是纯Dart库,具体场景如下:
- 所有间接依赖都是纯Dart库:该库可以直接使用。
- 间接依赖的三方库已适配ohos:该库可以直接使用,但需要在Flutter项目中的pubspec.yaml使用dependency_overrides替换间接依赖的三方库为已适配ohos的版本。
- 间接依赖的三方库未适配ohos:该三方库无法直接使用,需要先将间接依赖的三方库适配ohos。
测试代码:
import 'package:fish_redux/fish_redux.dart';
import 'package:flutter/material.dart' hide Action, Page;
class CounterState implements Cloneable<CounterState> {
int count = 0;
@override
CounterState clone() {
return CounterState()..count = count;
}
}
CounterState initState(Map<String, dynamic> args) {
return CounterState()..count = 0;
}
// Action: 定义动作枚举
enum CounterAction { increment }
class CounterActionCreator {
static Action onIncrement() {
return const Action(CounterAction.increment);
}
}
// Reducer: 处理同步状态改变
CounterState buildReducer(CounterState state, Action action) {
if (action.type == CounterAction.increment) {
return state.clone()..count = state.count + 1;
}
return state;
}
// View: 构建 UI 界面
Widget buildView(
CounterState state, Dispatch dispatch, ViewService viewService) {
return Scaffold(
appBar: AppBar(title: const Text('Fish-Redux')),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
const Text('当前计数:'),
Text('${state.count}', style: const TextStyle(fontSize: 40)),
],
),
),
floatingActionButton: FloatingActionButton(
onPressed: () => dispatch(CounterActionCreator.onIncrement()),
child: const Icon(Icons.add),
),
);
}
// Page: 组装所有组件
class CounterPage extends Page<CounterState, Map<String, dynamic>> {
CounterPage()
: super(
initState: initState,
reducer: asReducer<CounterState>({
CounterAction.increment: buildReducer,
}),
view: buildView,
);
}
// 运行入口
void main() => runApp(createApp());
Widget createApp() {
return MaterialApp(
title: 'Fish-Redux Demo',
home: CounterPage().buildPage(null), // 构建并显示页面
);
}
更多关于HarmonyOS鸿蒙Next中fish-redux插件适配的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
fish-redux 是一个纯 Dart 实现的 Flutter 状态管理框架,不涉及平台特定代码,理论上可在任何 Flutter 支持的平台上运行。但 HarmonyOS Next 上的 Flutter ohos 分支目前仍处于早期适配阶段,部分 Dart 语言特性、编译工具链或 Flutter 引擎行为可能与标准 Flutter 存在差异,导致 fish-redux 无法直接编译或运行时异常,表现为“缺少适配”。这是引擎层兼容性所致,而非插件本身需要平台通道。目前,fish-redux 在 HarmonyOS Next 上暂不可用,需等待 ohos 分支与上游 Flutter 主干同步成熟,或社区进行针对性移植验证。

