乐于分享
好东西不私藏

鸿蒙Flutter插件精选:app_links_ohos

鸿蒙Flutter插件精选:app_links_ohos

简介

app_links_ohosapp_links[1] 在 OpenHarmony 平台的实现,为鸿蒙应用提供深度链接(Deep Links)和应用链接(App Links)处理能力。支持 HTTPS URL 打开 App、自定义 Scheme 等场景,是鸿蒙化 Flutter 应用中处理外部链接跳转的标准方案。

  • 仓库地址:harmonycandies/app_links_ohos[2]
  • 当前版本app_links_ohos: ^0.2.0(需搭配 app_links: ^6.4.0

安装

pubspec.yaml 中添加依赖:

dependencies:
  app_links: ^6.4.0
  app_links_ohos: ^0.2.0

然后执行 flutter pub get


鸿蒙端配置

在 OpenHarmony 项目的 module.json5 文件中添加 uris 配置,声明你的 App 能处理的链接规则:

{
  "module": {
    "abilities": [
      {
        "skills": [
          {
            "uris": [
              {
                "scheme": "https",
                "host": "example.com",
                "path": "/open/*"
              },
              {
                "scheme": "myapp",
                "host": "open",
                "path": "product"
              }
            ]
          }
        ]
      }
    ]
  }
}

更多细节请参考 鸿蒙 App Linking 开发文档[3]


核心 API

app_links_ohos 的使用方式与 app_links 完全一致,最核心的 API 就是 uriLinkStream

import 'package:app_links/app_links.dart';

final appLinks = AppLinks();

// 监听所有链接事件(包括初始链接和后续链接)
final sub = appLinks.uriLinkStream.listen((Uri uri) {
  // 处理跳转逻辑
  // 如导航到对应页面
  print('收到链接: $uri');
});

// 在 dispose 时取消订阅
@override
void dispose() {
  sub.cancel();
  super.dispose();
}

快速集成

在 App 启动时尽早初始化 AppLinks 实例(建议放在 main 函数或 App 入口中),以确保能捕获到冷启动时的初始链接:

void main() {
  WidgetsFlutterBinding.ensureInitialized();

  final appLinks = AppLinks();

  runApp(MyApp(appLinks: appLinks));
}

在页面中使用:

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key});

  @override
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage{
  late final AppLinks _appLinks;
  StreamSubscription<Uri>? _sub;

  @override
  void initState() {
    super.initState();
    _appLinks = AppLinks();
    _sub = _appLinks.uriLinkStream.listen((uri) {
      // 解析 uri 并进行页面导航
      _handleDeepLink(uri);
    });
  }

  void _handleDeepLink(Uri uri) {
    // 自定义链接处理逻辑
  }

  @override
  void dispose() {
    _sub?.cancel();
    super.dispose();
  }
}

总结

app_links_ohos 为鸿蒙 Flutter 应用提供了一站式的深度链接解决方案。只需简单配置 module.json5,再通过 uriLinkStream 监听链接事件,即可轻松实现 App 外部链接跳转。配合 app_links 主库,一套代码同时支持 Android、iOS、鸿蒙等多个平台,是跨平台深度链接的最佳选择 🌟

引用链接

[1]app_links: https://pub.dev/packages/app_links

[2]harmonycandies/app_links_ohos: https://github.com/harmonycandies/app_links_ohos

[3]鸿蒙 App Linking 开发文档: https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/app-linking-startup-V5