聊天页面,订单卡片

这个提交包含在:
xuqm 2025-03-17 16:47:21 +08:00
父节点 62f6fb563d
当前提交 ecfef2154b
共有 2 个文件被更改,包括 35 次插入1 次删除

查看文件

@ -1,5 +1,6 @@
export interface RefreshController {
toTop: (smooth?: boolean) => void
toBottom: (smooth?: boolean) => void
toIndex: (value: number, smooth?: boolean, align?: ScrollAlign) => void
isAtEnd: () => boolean
}

查看文件

@ -35,12 +35,16 @@ export struct RefreshView {
} else if (this._toBottom) {
this.toBottom()
this._toBottom = false
} else if (this._toIndex) {
this.toIndex()
this._toIndex = false
}
}
};
private _firstFinish = false
private _isLoad = false
private _toTop = false
private _toIndex = false
private _toBottom = false
change() {
@ -58,11 +62,31 @@ export struct RefreshView {
this.controller.toBottom = (smooth?: boolean) => {
this.toBottom(smooth)
}
this.controller.toIndex = (value: number, smooth?: boolean, align?: ScrollAlign) => {
this.toIndex(value, smooth, align)
}
this.controller.isAtEnd = () => this._scroller.isAtEnd()
}
this._listener.on('draw', this.onDrawComplete)
}
@State value: number = -1
@State smooth?: boolean = false
@State aligns?: ScrollAlign = undefined
toIndex(value?: number, smooth?: boolean, align?: ScrollAlign) {
if (!this._isLoad) {
if (value || this.value != -1 || value === 0) {
this._scroller.scrollToIndex(value ?? this.value, smooth, align)
}
} else {
this.value = value ?? this.value
this.smooth = smooth
this.aligns = align
this._toIndex = true
}
}
toTop(smooth?: boolean) {
if (!this._isLoad) {
this._scroller.scrollToIndex(0, smooth, ScrollAlign.START)
@ -73,7 +97,7 @@ export struct RefreshView {
toBottom(smooth?: boolean) {
if (!this._isLoad) {
this._scroller.scrollToIndex(this.data.length - 1, smooth, ScrollAlign.END)
this._scroller.scrollToIndex(this.data.length, smooth, ScrollAlign.END)
} else {
this._toBottom = true
}
@ -83,8 +107,13 @@ export struct RefreshView {
this._listener.off('draw', this.onDrawComplete);
}
@Builder
doNothingBuilder() {
};
// 使用父组件@Builder装饰的方法初始化子组件@BuilderParam
@BuilderParam customBuilderParam: (item: ESObject, index: number) => void
@BuilderParam headBuilderParam: () => void = this.doNothingBuilder;
build() {
@ -93,6 +122,10 @@ export struct RefreshView {
List({
scroller: this._scroller,
}) {
ListItem() {
this.headBuilderParam()
}
ForEach(this.data ?? [], (item: ESObject, index: number) => {
ListItem() {
this.customBuilderParam(item, index)