From 0d227f7f5270f83ff5e16aecdc6920f612300c9c Mon Sep 17 00:00:00 2001 From: ivagin Date: Tue, 24 Dec 2024 15:15:48 +0100 Subject: [PATCH] [shopping] ArkTS ForEach workaround Signed-off-by: ivagin --- arkoala-arkts/arkui/src/ForEach.ts | 4 ++-- .../src/ets/pages/detailPage/detail.ets | 24 +++++++++---------- .../shopping/src/ets/pages/homePage/User.ets | 16 ++++++------- .../src/ets/pages/homePage/boutique.ets | 4 ++-- .../shopping/src/ets/pages/homePage/core1.ets | 8 +++---- .../shopping/src/ets/pages/homePage/core2.ets | 8 +++---- .../shopping/src/ets/pages/homePage/find.ets | 12 +++++----- .../shopping/src/ets/pages/homePage/main.ets | 16 ++++++------- .../src/ets/pages/homePage/shopCart.ets | 8 +++---- .../shopping/src/ets/pages/index-entry.ets | 4 ++-- .../src/ets/pages/search/searchPage.ets | 16 ++++++------- arkoala/ets-plugin/src/Importer.ts | 1 + 12 files changed, 61 insertions(+), 60 deletions(-) diff --git a/arkoala-arkts/arkui/src/ForEach.ts b/arkoala-arkts/arkui/src/ForEach.ts index d05800a8f..c0543a682 100644 --- a/arkoala-arkts/arkui/src/ForEach.ts +++ b/arkoala-arkts/arkui/src/ForEach.ts @@ -19,8 +19,8 @@ import { RepeatByArray } from "@koalaui/runtime" /** @memo */ export function ForEach(data: Array, /** @memo */ - itemGenerator: (item: T, index?: int32) => void, - keyGenerator?: (item: T, index?: int32) => string, + itemGenerator: (item: T, index: int32) => void, + keyGenerator: (item: T, index: int32) => string, ) { RepeatByArray(data, (element: T, index: int32) => keyGenerator ? hashCodeFromString(keyGenerator!(element, index)) : index, diff --git a/arkoala-arkts/shopping/src/ets/pages/detailPage/detail.ets b/arkoala-arkts/shopping/src/ets/pages/detailPage/detail.ets index 72500a743..083e1bd95 100644 --- a/arkoala-arkts/shopping/src/ets/pages/detailPage/detail.ets +++ b/arkoala-arkts/shopping/src/ets/pages/detailPage/detail.ets @@ -85,10 +85,10 @@ export struct Detail { .backgroundColor(Color.White) Swiper() { - ForEach(this.swiper, (item: SwiperModel) => { + ForEach(this.swiper, (item: SwiperModel, index: int32) => { Image(item.src) .objectFit(ImageFit.Contain) - }, (item: SwiperModel) => JSON.stringify(item)) + }, (item: SwiperModel, index: int32) => JSON.stringify(item)) } .index(0) .width('100%') @@ -364,11 +364,11 @@ export struct Detail { Flex({ justifyContent: FlexAlign.SpaceBetween, alignItems: ItemAlign.Center }) { Text() Flex({ justifyContent: FlexAlign.SpaceBetween, alignItems: ItemAlign.Center }) { - ForEach(this.phoneType, (item: PhoneTypeModel) => { + ForEach(this.phoneType, (item: PhoneTypeModel, index: int32) => { Image(`${item.uri}`) .objectFit(ImageFit.Contain) .width(35 * this.ratio) - }, (item: PhoneTypeModel) => JSON.stringify(item)) + }, (item: PhoneTypeModel, index: int32) => JSON.stringify(item)) Text('共6种机身颜色可选') .fontSize(13 * this.ratio) } @@ -456,12 +456,12 @@ export struct Detail { .margin({ top: 10, bottom: 10 } as Margin) Row() { - ForEach(this.showImg, (item: ShowImgModel) => { + ForEach(this.showImg, (item: ShowImgModel, index: int32) => { Image(item.uri) .objectFit(ImageFit.Cover) .width('25%') .height(100 * this.ratio) - }, (item: ShowImgModel) => JSON.stringify(item)) + }, (item: ShowImgModel, index: int32) => JSON.stringify(item)) } .backgroundColor(Color.Red) @@ -586,7 +586,7 @@ export struct Detail { .margin({ top: 10, bottom: 10 } as Margin) Flex({ justifyContent: FlexAlign.Center, wrap: FlexWrap.Wrap, alignContent: FlexAlign.Start }) { - ForEach(this.recommendData, (item: RecommendDataModel) => { + ForEach(this.recommendData, (item: RecommendDataModel, index: int32) => { Column() { Image(`${item.img}`) .objectFit(ImageFit.Contain) @@ -606,22 +606,22 @@ export struct Detail { .width('33%') .height('48%') .alignItems(HorizontalAlign.Start) - }, (item: RecommendDataModel) => JSON.stringify(item)) + }, (item: RecommendDataModel, index: int32) => JSON.stringify(item)) } .height('45%') } .margin({ top: 10 } as Margin) Column() { - ForEach(this.goodsList, (item: GoodsInfoModel) => { + ForEach(this.goodsList, (item: GoodsInfoModel, index: int32) => { Image(`${item.img}`) .width('100%') .objectFit(ImageFit.Cover) - }, (item: GoodsInfoModel) => JSON.stringify(item)) + }, (item: GoodsInfoModel, index: int32) => JSON.stringify(item)) } Flex({ justifyContent: FlexAlign.Start, wrap: FlexWrap.Wrap, alignContent: FlexAlign.Start }) { - ForEach(this.listImg, (item: ListDataModel) => { + ForEach(this.listImg, (item: ListDataModel, index: int32) => { Column() { Image(`${item.img}`) .objectFit(ImageFit.Contain) @@ -638,7 +638,7 @@ export struct Detail { .height('32%') .margin(5) .alignItems(HorizontalAlign.Center) - }, (item: ListDataModel) => JSON.stringify(item)) + }, (item: ListDataModel, index: int32) => JSON.stringify(item)) } } diff --git a/arkoala-arkts/shopping/src/ets/pages/homePage/User.ets b/arkoala-arkts/shopping/src/ets/pages/homePage/User.ets index 9ba78d1ab..711fcd145 100644 --- a/arkoala-arkts/shopping/src/ets/pages/homePage/User.ets +++ b/arkoala-arkts/shopping/src/ets/pages/homePage/User.ets @@ -94,7 +94,7 @@ export struct User { } Flex({ justifyContent: FlexAlign.SpaceAround, alignItems: ItemAlign.Center }) { - ForEach(this.record, (item: RecordModel) => { + ForEach(this.record, (item: RecordModel, index: int32) => { Column() { Image(item.img) .width(30 * this.ratio) @@ -113,7 +113,7 @@ export struct User { } as SearchParam }) }) - }, (item: RecordModel) => JSON.stringify(item)) + }, (item: RecordModel, index: int32) => JSON.stringify(item)) } Flex({ justifyContent: FlexAlign.SpaceBetween, alignItems: ItemAlign.Center }) { @@ -161,7 +161,7 @@ export struct User { } Flex({ justifyContent: FlexAlign.SpaceBetween, alignItems: ItemAlign.Center }) { - ForEach(this.orderData, (item: OrderModel) => { + ForEach(this.orderData, (item: OrderModel, index: int32) => { Column() { Image(item.img) .width(30 * this.ratio) @@ -171,7 +171,7 @@ export struct User { Text(item.title) .fontSize(12 * this.ratio) } - }, (item: OrderModel) => JSON.stringify(item)) + }, (item: OrderModel, index: int32) => JSON.stringify(item)) } .margin({ top: 10 } as Margin) @@ -211,7 +211,7 @@ export struct User { Column() { Flex({ justifyContent: FlexAlign.SpaceAround, alignItems: ItemAlign.Center }) { - ForEach(this.discountData, (item: DiscountModel) => { + ForEach(this.discountData, (item: DiscountModel, index: int32) => { Column() { Image(item.img) .width(35 * this.ratio) @@ -225,7 +225,7 @@ export struct User { .fontSize(12 * this.ratio) .fontColor(Color.Grey) } - }, (item: DiscountModel) => JSON.stringify(item)) + }, (item: DiscountModel, index: int32) => JSON.stringify(item)) } .margin({ top: 10 } as Margin) } @@ -236,7 +236,7 @@ export struct User { Column() { Flex({ justifyContent: FlexAlign.SpaceAround, alignItems: ItemAlign.Center }) { - ForEach(this.serviceData, (item: ServiceModel) => { + ForEach(this.serviceData, (item: ServiceModel, index: int32) => { Column() { Image(item.img) .width(30 * this.ratio) @@ -246,7 +246,7 @@ export struct User { Text(item.title) .fontSize(12 * this.ratio) } - }, (item: ServiceModel) => JSON.stringify(item)) + }, (item: ServiceModel, index: int32) => JSON.stringify(item)) } .margin({ top: 10 } as Margin) } diff --git a/arkoala-arkts/shopping/src/ets/pages/homePage/boutique.ets b/arkoala-arkts/shopping/src/ets/pages/homePage/boutique.ets index b59eac558..990d0d47c 100644 --- a/arkoala-arkts/shopping/src/ets/pages/homePage/boutique.ets +++ b/arkoala-arkts/shopping/src/ets/pages/homePage/boutique.ets @@ -24,7 +24,7 @@ export struct Boutique { build() { Column() { Flex({ wrap: FlexWrap.Wrap, direction: FlexDirection.Row }) { - ForEach(this.boutiqueData, (item: BoutiqueModel) => { + ForEach(this.boutiqueData, (item: BoutiqueModel, index: int32) => { Column() { Text(item.text1) .fontSize(15 * this.ratio) @@ -46,7 +46,7 @@ export struct Boutique { } .width('50%') .alignItems(HorizontalAlign.Start) - }, (item: BoutiqueModel) => JSON.stringify(item)) + }, (item: BoutiqueModel, index: int32) => JSON.stringify(item)) } } .width('92%') diff --git a/arkoala-arkts/shopping/src/ets/pages/homePage/core1.ets b/arkoala-arkts/shopping/src/ets/pages/homePage/core1.ets index 557b9a2bf..92e2cf49c 100644 --- a/arkoala-arkts/shopping/src/ets/pages/homePage/core1.ets +++ b/arkoala-arkts/shopping/src/ets/pages/homePage/core1.ets @@ -26,10 +26,10 @@ export struct Core1 { build() { Column() { List() { - ForEach(this.cols, (item1: Number) => { + ForEach(this.cols, (item1: Number, index: int32) => { ListItem() { Grid() { - ForEach(this.rows, (item2: Number) => { + ForEach(this.rows, (item2: Number, index: int32) => { GridItem() { Column() { Image(`${this.coreData[item1.valueOf() * 2 + item2.valueOf()].uri}`) @@ -42,13 +42,13 @@ export struct Core1 { } } .width('100%') - }, (item2: Number) => JSON.stringify(item2.valueOf())) + }, (item2: Number, index: int32) => JSON.stringify(item2.valueOf())) } .rowsTemplate('1fr 1fr') .columnsTemplate('1fr') } .width('20%') - }, (item1: Number) => JSON.stringify(item1.valueOf())) + }, (item1: Number, index: int32) => JSON.stringify(item1.valueOf())) } .listDirection(Axis.Horizontal) .height(160 * this.ratio) diff --git a/arkoala-arkts/shopping/src/ets/pages/homePage/core2.ets b/arkoala-arkts/shopping/src/ets/pages/homePage/core2.ets index 2505226b8..24472e0e9 100644 --- a/arkoala-arkts/shopping/src/ets/pages/homePage/core2.ets +++ b/arkoala-arkts/shopping/src/ets/pages/homePage/core2.ets @@ -26,10 +26,10 @@ export struct Core2 { build() { Column() { List() { - ForEach(this.cols, (item1: Number) => { + ForEach(this.cols, (item1: Number, index: int32) => { ListItem() { Grid() { - ForEach(this.rows, (item2: Number) => { + ForEach(this.rows, (item2: Number, index: int32) => { GridItem() { Column() { Image(`${this.coreData[item1.valueOf() * 2 + item2.valueOf()].uri}`) @@ -42,13 +42,13 @@ export struct Core2 { } } .width('100%') - }, (item2: Number) => JSON.stringify(item2.valueOf())) + }, (item2: Number, index: int32) => JSON.stringify(item2.valueOf())) } .rowsTemplate('1fr 1fr') .columnsTemplate('1fr') } .width('22.5%') - }, (item1: Number) => JSON.stringify(item1.valueOf())) + }, (item1: Number, index: int32) => JSON.stringify(item1.valueOf())) } .listDirection(Axis.Horizontal) .height('22%') diff --git a/arkoala-arkts/shopping/src/ets/pages/homePage/find.ets b/arkoala-arkts/shopping/src/ets/pages/homePage/find.ets index 63b3eb510..242dd14e5 100644 --- a/arkoala-arkts/shopping/src/ets/pages/homePage/find.ets +++ b/arkoala-arkts/shopping/src/ets/pages/homePage/find.ets @@ -41,11 +41,11 @@ export struct FindPage { .vertical(true) .height('8%') Swiper() { - ForEach(this.searchText, (item: SearchTextModel) => { + ForEach(this.searchText, (item: SearchTextModel, index: int32) => { Text(item.searchText) .fontSize(15 * this.ratio) .fontColor(Color.Grey) - }, (item: SearchTextModel) => JSON.stringify(item)) + }, (item: SearchTextModel, index: int32) => JSON.stringify(item)) } .width('65%') .autoPlay(false) @@ -77,10 +77,10 @@ export struct FindPage { ListItem() { Flex({ justifyContent: FlexAlign.SpaceBetween, alignItems: ItemAlign.Center }) { - ForEach(this.titleText, (item: FindTitleTextModel) => { + ForEach(this.titleText, (item: FindTitleTextModel, index: int32) => { Text(item.titleText) .fontSize(15 * this.ratio) - }, (item: FindTitleTextModel) => JSON.stringify(item)) + }, (item: FindTitleTextModel, index: int32) => JSON.stringify(item)) } .padding({ left: 15, right: 15 } as Padding) } @@ -90,7 +90,7 @@ export struct FindPage { ListItem() { Column() { - ForEach(items, (item: Number) => { + ForEach(items, (item: Number, index: int32) => { Row() { Column() { ImageItem({ ratio: this.ratio }) @@ -105,7 +105,7 @@ export struct FindPage { .width('100%') .aspectRatio(1.1) .margin({ top: 10 } as Margin) - }, (item: Number) => JSON.stringify(item.valueOf())) + }, (item: Number, index: int32) => JSON.stringify(item.valueOf())) } .padding({ left: 10, right: 10 } as Padding) } diff --git a/arkoala-arkts/shopping/src/ets/pages/homePage/main.ets b/arkoala-arkts/shopping/src/ets/pages/homePage/main.ets index 52dcba274..11e37f41a 100644 --- a/arkoala-arkts/shopping/src/ets/pages/homePage/main.ets +++ b/arkoala-arkts/shopping/src/ets/pages/homePage/main.ets @@ -48,7 +48,7 @@ export struct MainPage { .objectFit(ImageFit.Contain) Swiper() { - ForEach(this.searchData, (item: SearchTextModel) => { + ForEach(this.searchData, (item: SearchTextModel, index: int32) => { Column() { Text(item.searchText) .fontSize(14 * (this.ratio + 0.2)) @@ -65,7 +65,7 @@ export struct MainPage { } this.pathInfos.pushPath({name:'searchPage', param: searchParam}) }) - }, (item: SearchTextModel) => JSON.stringify(item)) + }, (item: SearchTextModel, index: int32) => JSON.stringify(item)) } .width('65%') .autoPlay(true) @@ -97,7 +97,7 @@ export struct MainPage { Column() { Row() { List() { - ForEach(this.navData, (item: NavDataModel) => { + ForEach(this.navData, (item: NavDataModel, index: int32) => { ListItem() { Text(item.navData) .fontColor(`${item.navData == '首页' ? Color.Blue : Color.Black}`) @@ -107,7 +107,7 @@ export struct MainPage { .lineHeight(30 * this.ratio) } .height(30 * this.ratio) - }, (item: NavDataModel) => JSON.stringify(item)) + }, (item: NavDataModel, index: int32) => JSON.stringify(item)) } .height(30 * this.ratio) .width('85%') @@ -127,7 +127,7 @@ export struct MainPage { .margin({ bottom: 0, left: 5, right: 5 } as Margin) Swiper() { - ForEach(this.swiperData, (item: SwiperModel) => { + ForEach(this.swiperData, (item: SwiperModel, index: int32) => { Image(item.img) .width('100%') .height('100%') @@ -141,7 +141,7 @@ export struct MainPage { this.pathInfos.pushPath({name:'detailPage',param:params}) }) - }, (item: SwiperModel) => JSON.stringify(item)) + }, (item: SwiperModel, index: int32) => JSON.stringify(item)) } .autoPlay(true) .loop(true) @@ -158,7 +158,7 @@ export struct MainPage { .margin({ top: 10 } as Margin) Flex({ justifyContent: FlexAlign.SpaceAround, alignItems: ItemAlign.Center }) { - ForEach(this.titleBarData, (item: TitleBarModel) => { + ForEach(this.titleBarData, (item: TitleBarModel, index: int32) => { Column() { Text(item.title) .fontSize(15 * this.ratio) @@ -171,7 +171,7 @@ export struct MainPage { this.tabsIndex = item.id this.controller.changeIndex(item.id) }) - }, (item: TitleBarModel) => JSON.stringify(item)) + }, (item: TitleBarModel, index: int32) => JSON.stringify(item)) } .height('7%') .zIndex(2) diff --git a/arkoala-arkts/shopping/src/ets/pages/homePage/shopCart.ets b/arkoala-arkts/shopping/src/ets/pages/homePage/shopCart.ets index 437120abb..a6cc4621e 100644 --- a/arkoala-arkts/shopping/src/ets/pages/homePage/shopCart.ets +++ b/arkoala-arkts/shopping/src/ets/pages/homePage/shopCart.ets @@ -97,20 +97,20 @@ export struct ShopCart { Row() { Column() { - ForEach(this.cartNum, (item: Number) => { + ForEach(this.cartNum, (item: Number, index: int32) => { Column() { Other({ item: item.valueOf() % 6, ratio: this.ratio }) } - }, (item: Number) => JSON.stringify(item.valueOf())) + }, (item: Number, index: int32) => JSON.stringify(item.valueOf())) } .margin(2) Column() { - ForEach(this.cartNum, (item: Number) => { + ForEach(this.cartNum, (item: Number, index: int32) => { Column() { Other({ item: item.valueOf() % 6, ratio: this.ratio }) } - }, (item: Number) => JSON.stringify(item.valueOf())) + }, (item: Number, index: int32) => JSON.stringify(item.valueOf())) } .margin(2) } diff --git a/arkoala-arkts/shopping/src/ets/pages/index-entry.ets b/arkoala-arkts/shopping/src/ets/pages/index-entry.ets index accafa4aa..641d97a16 100644 --- a/arkoala-arkts/shopping/src/ets/pages/index-entry.ets +++ b/arkoala-arkts/shopping/src/ets/pages/index-entry.ets @@ -89,7 +89,7 @@ struct Index { Column() { Flex({ justifyContent: FlexAlign.SpaceAround, alignItems: ItemAlign.Center }) { - ForEach(this.tabTittleData, (item: TabTitleModel) => { + ForEach(this.tabTittleData, (item: TabTitleModel, index: int32) => { Flex({ direction: FlexDirection.Column, justifyContent: FlexAlign.Center, @@ -109,7 +109,7 @@ struct Index { this.tabsIndex = item.id this.controller.changeIndex(item.id) }) - }, (item: TabTitleModel) => JSON.stringify(item)) + }, (item: TabTitleModel, index: int32) => JSON.stringify(item)) } .height('8%') } diff --git a/arkoala-arkts/shopping/src/ets/pages/search/searchPage.ets b/arkoala-arkts/shopping/src/ets/pages/search/searchPage.ets index 7897ab199..886da2981 100644 --- a/arkoala-arkts/shopping/src/ets/pages/search/searchPage.ets +++ b/arkoala-arkts/shopping/src/ets/pages/search/searchPage.ets @@ -132,7 +132,7 @@ export struct SearchPage { if (this.flag) { Flex({ justifyContent: FlexAlign.Start, alignItems: ItemAlign.Center, wrap: FlexWrap.Wrap }) { - ForEach(this.exampleText, (item: ExampleDataModel) => { + ForEach(this.exampleText, (item: ExampleDataModel, index: int32) => { Button() { Text(item.exampleText) .fontSize(12 * this.ratio) @@ -142,7 +142,7 @@ export struct SearchPage { .margin(3) .height(30 * this.ratio) .backgroundColor('#f8f8f8') - }, (item: ExampleDataModel) => JSON.stringify(item)) + }, (item: ExampleDataModel, index: int32) => JSON.stringify(item)) } .margin({ left: 10, right: 10 } as Margin) } else { @@ -182,7 +182,7 @@ export struct SearchPage { .alignItems(HorizontalAlign.Start) List() { - ForEach(this.outerArray, (item: Number) => { + ForEach(this.outerArray, (item: Number, index: int32) => { ListItem() { Column() { Flex({ justifyContent: FlexAlign.SpaceBetween, alignItems: ItemAlign.Center }) { @@ -204,7 +204,7 @@ export struct SearchPage { } .padding({ left: 5, right: 5 } as Padding) - ForEach(this.innerArray, (item: Number) => { + ForEach(this.innerArray, (item: Number, index: int32) => { Flex({ justifyContent: FlexAlign.SpaceBetween, alignItems: ItemAlign.Center }) { Flex({ alignItems: ItemAlign.Center }) { Flex({ justifyContent: FlexAlign.Center, alignItems: ItemAlign.Center }) { @@ -231,7 +231,7 @@ export struct SearchPage { .padding({ left: 5, right: 5 } as Padding) .width('100%') .height(40 * this.ratio) - }, (item: Number) => JSON.stringify(item.valueOf())) + }, (item: Number, index: int32) => JSON.stringify(item.valueOf())) } .width('100%') } @@ -240,7 +240,7 @@ export struct SearchPage { .padding({ top: 5 } as Padding) .backgroundColor(Color.White) .width(`60%`) - }, (item: Number) => JSON.stringify(item.valueOf())) + }, (item: Number, index: int32) => JSON.stringify(item.valueOf())) } .listDirection(Axis.Horizontal) .height('70%') @@ -257,7 +257,7 @@ export struct SearchPage { } if (this.isFlag) { Column() { - ForEach(this.searched, (item: string) => { + ForEach(this.searched, (item: string, index: int32) => { Flex({ justifyContent: FlexAlign.SpaceBetween, alignItems: ItemAlign.Center }) { Row() { Image('/resources/icon/search.png') @@ -281,7 +281,7 @@ export struct SearchPage { this.isFlag = false this.value = item }) - }, (item: string) => JSON.stringify(item)) + }, (item: string, index: int32) => JSON.stringify(item)) } } } diff --git a/arkoala/ets-plugin/src/Importer.ts b/arkoala/ets-plugin/src/Importer.ts index 69de0a7b1..4833ca394 100644 --- a/arkoala/ets-plugin/src/Importer.ts +++ b/arkoala/ets-plugin/src/Importer.ts @@ -257,6 +257,7 @@ export class Importer { temporary workaround for arkts reexport bug */ if (this.isArkts()) { + this.addCommonImport("int32") if (name === "LocalStorage") return this.addArkuiCommonImport(name) if (name === "observableProxy") return this.addArkuiCommonImport(name) } -- Gitee