OpenHarmony三方组件:arouter-api-onActivityResult

Handpc
发布于 2023-3-16 11:34
浏览
0收藏

简介

Arouter是一款轻量且高效的适用于OpenHarmony的页面路由工具。

  • 支持页面间路由跳转;
  • 支持带参数跳转及回调;
  • 支持配置跳转拦截器;
  • 支持预处理跳转与否。

效果图

OpenHarmony三方组件:arouter-api-onActivityResult-鸿蒙开发者社区

下载安装

npm install @ohos/arouteronactivityresult --save

OpenHarmony npm环境配置等更多内容,请参考 ​​如何安装OpenHarmony npm包​

使用说明

路由跳转

1.不传参跳转

通过Arouter.getInstance()创建路由对象,使用链式调用方法 build('')配置跳转的页面,navigation() 方法进行页面跳转。

import {Arouter} from "@ohos/arouteronactivityresult";
Arouter.getInstance()
    .build("--/--")  //需要跳转的地址
    .navigation()

2.传参跳转

在不传参跳转的基础上,跳转之前通过withParams()进行参数配置。

import {Arouter} from "@ohos/arouteronactivityresult";
Arouter.getInstance()
    .build("--/--")  //需要跳转的地址
    .withParams({index:"--"})
    .navigation()

3.路由回调

路由回调需要配合NavigationCallback接口进行,在路由前的页面实现NavigationCallback接口

import {NavigationCallback} from '@ohos/arouteronactivityresult'
var callback:NavigationCallback = {
    onInterrupt(postcard){},
    onArrival(postcard){},
    onActivityResult(data){}
}

然后将callback传入 .navigationWithCallback()中进行跳转

import {Arouter} from "@ohos/arouteronactivityresult";
Arouter.getInstance()
    .build("--")//需要跳转的地址
    .navigationWithCallback(callback)

在目标页面的onPageShow()生命周期中调用getPostcard()方法获取到指定的postcard

import router from '@ohos.router';
if (postcard == null) {
    postcard = Arouter.getInstance().getPostcard(router.getState().path + router.getState().name);
}

使用 postcard.getNavigationCallback() 方法调用对应的回调方法,即可回调源页面实现的方法

postcard.getNavigationCallback().onActivityResult(params)

路由拦截

1.配置拦截器

在拦截器中的process()方法中实现页面的拦截,通过interceptorCallback.onInterrupt()中断跳转,interceptorCallback.onContinue()继续跳转。

import {Postcard,IInterceptor,InterceptorCallback} from '@ohos/arouteronactivityresult';
var iInterceptor:IInterceptor= {
    process(postcard:Postcard, interceptorCallback:InterceptorCallback) {
        // 选择拦截的页面,若跳转时有该路径则进行拦截提示,若没有则直接跳转
        if (Postcard.getUri() == 'pages/transit') {
            // 选择弹框
            AlertDialog.show(
                {
                    message: '被拦截了,点击继续跳转',
                    primaryButton: {
                        value: '取消',
                        action: () => {
                            // 中断跳转
                            interceptorCallback.onInterrupt(postcard)
                        }
                    },
                    secondaryButton: {
                        value: '继续',
                        action: () => {
                            // 继续跳转
                            interceptorCallback.onContinue(postcard);
                        }
                    },
                }
            )
        } else {
            // 继续跳转
            interceptorCallback.onContinue(postcard);
        }
    }
}

2.注册拦截器

import {registerInterceptor} from '@ohos/arouteronactivityresult';
registerInterceptor(iInterceptor);

3.移除拦截器

import {unregisterInterceptor} from '@ohos/arouteronactivityresult';
unregisterInterceptor()

4.配置绿色通道

在跳转前使用.setGreenChannel()方法跳过拦截(true:跳过拦截)。

Arouter.getInstance()
    .build("--/--")//需要跳转的地址
    .setGreenChannel(true)
    .navigation()

5.配置预处理跳转与否

预处理:实现 PretreatmentService 接口中 onPretreatment 方法,并返回一个Boolean值(true:继续跳转,false:不跳转)。

import {PretreatmentService} from '@ohos/arouteronactivityresult';
var pretreatmentService:PretreatmentService = {
  onPretreatment(postcard:Postcard):boolean{
    return true
  }
}

在跳转前调用.setPretreatmentService() 方法,将 pretreatmentService传入 setPretreatmentService()方法中完成预处理功能。

Arouter.getInstance()
    .build(this.router)
    .setPretreatmentService(pretreatmentService)
    .navigationWithCallback(callback)

接口说明

Arouter

方法名

入参

接口描述

build

string

配置页面跳转路径

withParams

{ }

传入另一页面的参数

navigation

正常跳转

navigationWithCallback

NavigationCallback

带回调跳转

setGreenChannel

boolean

配置是否为绿色通道

registerInterceptor

iInterceptor

注册拦截器

unregisterInterceptor

移除拦截器

getNavigationCallback

获取状态回调方法

setUri

string

设置页面跳转路径

getUri

获取跳转的页面路径

getParams

获取跳转传递的参数

getTag

获取标签

setTag

{ }

设置标签

withFlags

boolean

设置flags

getFlags

boolean

获得flags

toString

导出字符串

setPretreatmentService

PretreatmentService

预处理

getPostcard

页面路径

找到指定的postcard

回调接口

接口名

入参

接口描述

NavigationCallback.onArrival

Postcard

到达回调地

NavigationCallback.onInterrupt

Postcard

回调中断

NavigationCallback.onActivityResult

any

回调结果

IInterceptor.process

Postcard,InterceptorCallback

拦截过程

InterceptorCallback.onContinue

Postcard

拦截器回调继续

InterceptorCallback.onInterrupt

Postcard

拦截器回调暂停

PretreatmentService.onPretreatment

Postcard

预处理实现

兼容性

支持OpenHarmony API version 9 及以上版本.

目录结构

|---- arouteronactivityresult  
|     |---- src/main/ets/components/arouter # 路由跳转实现逻辑
|     |---- index.ets  # 对外接口

贡献代码

使用过程中发现任何问题都可以提 ​​Issue​​​ 给我们,当然,我们也非常欢迎你给我们发 ​​PR​​ 。

开源协议

本项目基于 ​​Apache License 2.0​​ ,请自由地享受和参与开源。



文章转载自:​​https://gitee.com/openharmony-tpc/arouter-api-onActivityResult​

arouter-api-onActivityResult-master.zip 9M 2次下载
收藏
回复
举报
回复
    相关推荐