《仿盒马》app 开发技术分享 -- 分类模块顶部导航列表弹窗(16)
技术栈
Appgallery connect
开发准备
上一节我们实现了分类页面的顶部导航栏列表,并且实现了首页金刚区跟首页导航栏的联动,这一节我们实现导航栏列表的弹窗功能,需要学习的知识点有自定义弹窗,同时我们的数据源需要跟分类页保持一一致。
功能分析
1.弹窗自定义弹窗的实现,然后我们需要在弹窗创建的时候实现数据的同步,当我们在弹窗未出现的时候进行列表下标的切换,打开弹窗的时候需要把对应的 index 传递进去,选中状态要保持同步。同时在弹窗内选择分类,外部列表也要同步切换,并且每次切换都要在 list 允许居中的情况下实现选中的 item 居中。
代码实现
首先实现弹窗的创建数据的传入,和选择后的回调 @Link select:number;@Link dataSource: SplitLayoutModel[];onItemSelected: (item: number) => void= () => {};controller: CustomDialogController;
然后实现相关布局以及逻辑 build() {Column() {Text('全部分类').fontSize(14).margin(12).width('100%').textAlign(TextAlign.Start).fontColor(Color.Black)
}}可以看到我们已经在 item 的点击事件中引用了回调,然后我们回到列表组件页面,实现回调 dialogController: CustomDialogController = new CustomDialogController({builder: CustomImageGridDialog({select:this.selectedIndex,dataSource: this.list,onItemSelected: (item: number) => {this.onItemClick!(item)}}),alignment: DialogAlignment.Top,customStyle:true});在这里我们实现下标的修改监听 onChange(){this.listScroller.scrollToIndex(this.selectedIndex, true, ScrollAlign.CENTER)}确保每一次下标的修改,list 都能实现居中,到这里我们的弹窗和金刚区以及列表的联动都已经实现了
评论