页面数据PagerData
大约 2 分钟
页面数据PagerData
每个Kuikly页面, 都带有由Native侧传递过来的数据, 这份数据在Kuikly中被称为PagerData。
如何获取PagerData
在Kuikly中,你可以在Pager子类或者组合组件ComposeView子类内获取PagerData
- 在
Pager子类中获取PagerData
@Page("1")
internal class HelloWorldPage : Pager() {
...
override fun body(): ViewBuilder {
...
}
override fun created() {
super.created()
val pgData = pagerData // 通过pagerData变量获取页面参数
}
}
- 在组合组件子类中获取
PagerData
class TestComposeView : ComposeView<ComposeAttr, ComposeEvent>() {
...
override fun created() {
super.created()
val pgData = pagerData // 在组合组件中获取PagerData
}
}
PagerData里面包含了两类参数
- 基础参数: 每个页面默认都带有的参数
- 业务扩展参数: 不同的页面,可根据业务诉求,在打开
Kuikly页面的时候,由Native侧将业务数据传递给Kuikly页面,然后存放在PagerData类中, 供业务侧使用
注意
PagerData数据需在Pager创建生命周期(onCreate)或之后调用,在此pager创建之前的时机访问(如全局变量初始化时获取PagerData数据),会触发框架保护异常:PagerNotFoundException。
PagerData基础参数
PagerData中的基础参数是由Kuikly框架传递的,默认每个页面都含有这些基础参数。
| 参数 | 描述 | 类型 |
|---|---|---|
| pageViewWidth | 页面根View宽度 | Float |
| pageViewHeight | 页面根View高度 | Float |
| statusBarHeight | 状态栏高度 | Float |
| deviceWidth | 屏幕宽度 | Float |
| deviceHeight | 屏幕高度 | Float |
| appVersion | app版本号 | String |
| isIOS | 是否为iOS平台 | Boolean |
| isIphoneX | 是否为iphoneX机型 | Boolean |
| params | 存放业务扩展的数据 | JSONObject |
| safeAreaInsets | 安全区域: 被系统界面(如状态栏、导航栏、工具栏或底部 Home 指示器、刘海屏底部边距)遮挡的视图区域 | EdgeInsets |
PagerData业务扩展参数
PagerData的业务扩展参数,是Native侧在打开Kuikly页面时,传递给Kuikly页面的参数,这些扩展参数会被统一存放在PagerData.params字段中。
例如如果Native在打开Kuikly页面的时候,传递了test:1数据,那在Kuikly页面中可以这样获取
internal class HelloWorldPage : Pager() {
...
override fun body(): ViewBuilder {
...
}
override fun created() {
super.created()
val test = pagerData.params.optInt("test") // 获取业务参数
}
}
更好的方式是,新建PagerData的扩展类,然后将业务参数通过扩展的形式封装在PagerData扩展类中
// PagerDataExt.kt
internal val PageData.test: Int
get() = params.optInt("test")
下一步
在学习了Kuikly的页面数据PagerData概念后, 下一步,我们接着学习Pager生命周期, 了解Pager的生命周期