Jelajahi Sumber

feat: 完成修改宝宝头像功能, 修复了部分BUG

YuJing 1 bulan lalu
induk
melakukan
de65c0a1c3

+ 3 - 19
features/feature/src/main/ets/pages/BabyInfoPage.ets

@@ -1,26 +1,10 @@
 import { _YtHeader } from '../components/_YtHeader';
-import { BabyInfo } from '../model/Index';
 import { IncreaseBabyInfoViewModel } from '../viewModel/IncreaseBabyInfoViewModel';
-import { AppStorageV2 } from '@kit.ArkUI';
-import { BasicType, DateFormat, YTDateUtil } from 'basic';
-import { emitter } from '@kit.BasicServicesKit';
+import { BasicType } from 'basic';
 
 @ComponentV2
 struct BabyInfoPage {
   @Local vm: IncreaseBabyInfoViewModel = new IncreaseBabyInfoViewModel(false);
-  // 当前的宝宝信息
-  @Local babyInfo: BabyInfo = AppStorageV2.connect<BabyInfo>(BabyInfo, () => new BabyInfo())!
-
-  aboutToAppear(): void {
-    BabyInfo.override(this.vm.babyInfo, this.babyInfo)
-    this.vm.babyInfo.birthday = YTDateUtil.formatDate(new Date(this.vm.babyInfo.birthday!), DateFormat.UNDERLINE)
-
-    emitter.on('upLoadEnd', (data) => {
-      console.log(JSON.stringify(data))
-      this.babyInfo.avatarUrl = data!.data!.toString()
-      this.vm.updateBaby()
-    })
-  }
 
   build() {
     NavDestination() {
@@ -34,13 +18,13 @@ struct BabyInfoPage {
 
           Row(){
             Row({space: 16}){
-              Image(this.babyInfo.avatarUrl ?? $r('app.media.default_img'))
+              Image(this.vm.babyInfo.avatarUrl ?? $r('app.media.default_img'))
                 .width(60)
                 .aspectRatio(1)
                 .borderRadius(14)
                 .onClick(() => { this.vm.updateAvatar() })
 
-              Text(this.babyInfo.days)
+              Text(this.vm.babyInfo.days)
             }
             .alignItems(VerticalAlign.Center)
           }

+ 1 - 1
features/feature/src/main/ets/view/MainView.ets

@@ -76,7 +76,7 @@ export struct MainView {
 
             // 头像
             Row(){
-              Image($r('[basic].media.default_avatar'))
+              Image(this.vm.babyInfo.avatarUrl)
                 .width("100%")
                 .borderRadius(14)
                 .aspectRatio(1)

+ 14 - 1
features/feature/src/main/ets/viewModel/IncreaseBabyInfoViewModel.ets

@@ -1,7 +1,9 @@
-import { BasicType, IBestToast, YTAvoid, YTLog, YTPhotoHelper, yTRouter } from 'basic';
+import { BasicType, DateFormat, IBestToast, YTAvoid, YTDateUtil, YTLog, YTPhotoHelper, yTRouter } from 'basic';
 import { DiaLogPageEnum, DiaLogParam, YTDiaLogModel } from 'basic/src/main/ets/models/YTDiaLogModel';
 import { BabyInfo } from '../model/Index';
 import { BabyFoodApi } from '../Apis/BabyFoodApi';
+import { AppStorageV2 } from '@kit.ArkUI';
+import { emitter } from '@kit.BasicServicesKit';
 
 @ObservedV2
 export class IncreaseBabyInfoViewModel{
@@ -42,6 +44,17 @@ export class IncreaseBabyInfoViewModel{
   constructor(isAdd: boolean = true) {
     this.isAdd = isAdd
     this.safeTop = AppStorage.get(YTAvoid.SAFE_TOP_KEY) as number
+
+    if(!isAdd) {
+      this.babyInfo = AppStorageV2.connect<BabyInfo>(BabyInfo, () => new BabyInfo())!
+      this.babyInfo.birthday = YTDateUtil.formatDate(new Date(this.babyInfo.birthday!), DateFormat.UNDERLINE)
+
+      emitter.on('upLoadEnd', (data) => {
+        console.log(JSON.stringify(data))
+        this.babyInfo.avatarUrl = data!.data!.toString()
+        this.updateBaby()
+      })
+    }
   }
 
   /**