注册¶
通过注册,可以将composable
注册成独立的页面,可以将一些平台的资源加入到库中,以供在其他地方使用,比如在desktop平台,可以通过注册的方式给窗口添加菜单。
使用¶
你可以在路由库的根部进行注册
RouteHost("firstPage"){
//在这里进行注册
}
register
方法进行注册,需要注意的是,该方法需要在RouteHost
之前调用。
MRouter.register{
//在这里进行注册
}
Register
进行扩展,然后在上述两个地方进行使用也可以完成注册。
注册页面¶
Register
主要有两个方法可以使用,分别是page
和module
。
RouteHost(""){
page("path?key=value"){
Page1() // 路径为:path
}
module("module1"){
page("content/{id}"){
Page1() // 路径为:module1/content/{id}
}
}
}
page
方法还可接受一个PageConfig
参数,用于设定一些页面配置,而页面配置目前只有launchMode
。module
方法可以对一系列拥有相同前缀的路径归组,方便管理。动态路径¶
库支持动态路径,如上述的:module1/content/{id}
,其中的{id}
就是占位符,需要注意的是,如果存在歧义的路由,将以精准的为主,比如:
RouteHost(""){
page("path/content"){
Page1()
}
page("path/{name}"){
Page2()
}
}
path/content
时,将会路由到Page1
。
注册平台资源¶
除了可以注册composable
页面之外,还可以注册平台的一些资源,需要使用RegisterBuilder.registerPlatformResource
方法。对于一些特殊需求,库提供了其他方法,但也是基于该方法实现。
注册平台界面¶
本库除了可以在composable之间路由之外,还可以路由到平台的界面上,如ios的UIViewController,android的Activity以及wasmjs的web页面。这些平台的界面也属于平台资源的一种。
MRouter.register{
//实现1
platformRoute("path",ActivityResultContracts.StartActivityForResult()) {
it.route(TestActivity::class)
}
//实现2
startActivity("path",TestActivity::class)
//实现3,跳转到系统设置页面
setting("app_home",Settings.ACTION_APPLICATION_DETAILS_SETTINGS){
data = Uri.parse("package:com.erolc.example")
}
}
MRouter.register{
//会使用默认的路由方式,如果需要自定义,则需使用registerRouteDelegate注册路由方式
platformRoute("path", TestUIViewController())
}
MRouter.register{
platformRoute("path","https://www.baidu.com")
}
注册菜单¶
desktop的window是不带菜单的,需要通过windowMenu
方法进行注册:
MRouter.register{
windowMenu("windowId"){
}
}
windowId
是窗口的唯一标识。