MRouter是一个适用于compose-multiplatform的路由库,其实现了基础的路由,参数传递,动画,手势,生命周期,共享元素以及局部路由等一系列功能。
在项目的build.gradle.kts
中添加以下依赖,同步后即可开始使用
commonMain.dependencies {
implementation("cn.erolc.mrouter:core:1.0.0-beta")
}
我们首先需要在common中创建Compose页面的根部,然后实现各个平台的入口即可。代码如下
@Composable
fun Home(){
val pageScope = LocalPageScope.current
Button(onClick={
pageScope.route("second") // route to second page
}){
//code...
}
}
@Composable
fun Second(){
val pageScope = LocalPageScope.current
Button(onClick={
pageScope.backPressed() // back to home page
}){
//code...
}
}
在common
中使用RouteHost
@Composable
fun App() {
MaterialTheme {
RouteHost("home") {
page("home") {
Home()
}
page("second") {
Second()
}
}
}
}
RouteHost
是路由的起点,通过page
方法将composable
注册成页面,以上示例在打开app时将首先展现Home()
页面。有关注册的更多操作,可前往注册部分。
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
App() // 使用common的App()
}
}
}
fun main() = mRouterApplication {
App()
}
fun MainViewController() = mRouterUIViewController {
App()
}
@OptIn(ExperimentalComposeUiApi::class)
fun main() {
CanvasBasedWindow(canvasElementId = "ComposeTarget") {
App()
}
}