一个 Compose 的一个支持平板双页面的回退栈管理组件 。
repositories {
// Other
maven {url 'https://jitpack.io'}
}
implementation "com.github.heyanLE:ExpandedStack:1.3"
// Activity
setContent {
ExpandedStack(
isHasExpanded = false // 是否开启扩展屏,这里需要自己根据屏幕宽度判断
) {
// 最初的主页面的可组合函数
MainA()
}
}
@Composable
fun MainA(){
// 获取 Entity 对象
val entity = LocalPageStackEntity.current
Column() {
Text(text = "MainA")
Button(onClick = {
// 将 MainB push 进主屏幕栈
entity.pushMain {
MainB()
}
}) {
Text(text = "to Main B")
}
Button(onClick = {
// 将 ExpandedA push 进扩展屏栈
entity.pushExpanded {
ExpandedA()
}
}) {
Text(text = "to Expanded A")
}
}
}
除此之外 PageStackEntity
还具有许多方法:
// push 进 当前所在屏幕栈
fun pushCurrent(content: @Composable ()->Unit){}
// push 进扩展屏栈
fun pushExpanded(content: @Composable ()->Unit){ }
// push 进 主屏幕栈
fun pushMain(content: @Composable () -> Unit){ }
// 按顺序推栈(推出最后入栈的屏幕,无论哪个栈)
fun popBack(){ }
// 当前栈出栈 (如果为主屏幕 第一个界面(最初的界面),则会无效)
fun popCurrent(){ }
// 主屏幕栈出栈
fun popMain(){ }
// 扩展屏栈出栈
fun popExpanded(){ }
- 支持 Router
- 支持更多入栈模式,比如类似 SingleTop 等