Skip to content

RouterApi for Coroutine

xiaojinzi123 edited this page Jun 17, 2021 · 1 revision

前言

很高兴, Component 能一直保持活力. 最近博主把 RouterApi 支持了协程. 下面就介绍一下如何使用吧

下面的用法是对 RouterApi 基础用法 的一个补充. 支持了 Kotlin 的协程. 详情请前往 Component

具体使用

普通跳转等待跳转结果, 失败抛异常

@HostAndPathAnno("user/detail")
suspend fun go(
  context: Context,
  @ParameterAnno("userId") userId: String
)

获取 ActivityResult

@NavigateAnno(forResult = true) // 注意这里要和返回值对应
@HostAndPathAnno("user/detail")
@RequestCodeAnno() // 表示随机使用一个 requestCode
suspend fun go(
  context: Context,
  @ParameterAnno("userId") userId: String
): ActivityResult

获取 Intent

@NavigateAnno(forIntent = true) // 注意这里要和返回值对应
@HostAndPathAnno("user/detail")
@RequestCodeAnno() // 表示随机使用一个 requestCode
suspend fun go(
  context: Context,
  @ParameterAnno("userId") userId: String
): Intent

获取 Intent 的同时, 匹配 resultCode(当 resultCode 匹配才返回 Intent, 否则异常)

@NavigateAnno(forIntent = true, resultCodeMatch = Activity.RESULT_OK)
@HostAndPathAnno("user/detail")
@RequestCodeAnno() // 表示随机使用一个 requestCode
suspend fun go(
  context: Context,
  @ParameterAnno("userId") userId: String
): Intent

获取 resultCode

@NavigateAnno(forResultCode = true)
@HostAndPathAnno("user/detail")
@RequestCodeAnno() // 表示随机使用一个 requestCode
suspend fun go(
  context: Context,
  @ParameterAnno("userId") userId: String
): Int

单纯的匹配 resultCode(当 resultCode 匹配即表示成功, 否则异常)

@NavigateAnno(resultCodeMatch = Activity.RESULT_OK)
@HostAndPathAnno("user/detail")
@RequestCodeAnno() // 表示随机使用一个 requestCode
suspend fun go(
  context: Context,
  @ParameterAnno("userId") userId: String
)
Clone this wiki locally