|
@@ -1,10 +1,14 @@
|
|
|
import TitleBar from '../view/TitleBar'
|
|
import TitleBar from '../view/TitleBar'
|
|
|
import { promptAction, router } from '@kit.ArkUI'
|
|
import { promptAction, router } from '@kit.ArkUI'
|
|
|
import { CommonConstants } from '../common/constants/CommonConstants'
|
|
import { CommonConstants } from '../common/constants/CommonConstants'
|
|
|
-import { AppUtil, PreferencesUtil, ToastUtil } from '@pura/harmony-utils'
|
|
|
|
|
|
|
+import { AppUtil, FileUtil, MD5, PreferencesUtil, ToastUtil } from '@pura/harmony-utils'
|
|
|
import { CustomContentDialog } from '@kit.ArkUI'
|
|
import { CustomContentDialog } from '@kit.ArkUI'
|
|
|
import ConfigurationConstant from '@ohos.app.ability.ConfigurationConstant';
|
|
import ConfigurationConstant from '@ohos.app.ability.ConfigurationConstant';
|
|
|
import common from '@ohos.app.ability.common';
|
|
import common from '@ohos.app.ability.common';
|
|
|
|
|
+import { photoAccessHelper } from '@kit.MediaLibraryKit'
|
|
|
|
|
+import { fileIo, fileUri } from '@kit.CoreFileKit'
|
|
|
|
|
+import { BusinessError } from '@kit.BasicServicesKit'
|
|
|
|
|
+import { BreakpointTypeEnum } from '../common/util/BreakpointSystem'
|
|
|
|
|
|
|
|
@Preview
|
|
@Preview
|
|
|
@Entry
|
|
@Entry
|
|
@@ -24,8 +28,10 @@ export struct SettingPage {
|
|
|
@State isShowSimi:boolean = false //是否显示私密音频
|
|
@State isShowSimi:boolean = false //是否显示私密音频
|
|
|
@State isShowFAV:boolean = true //是否显示我的收藏
|
|
@State isShowFAV:boolean = true //是否显示我的收藏
|
|
|
@State isShowHistory:boolean = true //是否显示最近播放
|
|
@State isShowHistory:boolean = true //是否显示最近播放
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
|
|
+ @State isCustomizeBg: boolean = false //自定义背景界面
|
|
|
|
|
+ @State isCustomizeBgSheet: boolean = false //自定义背景界面
|
|
|
|
|
+ @State customizeBgPath: string | undefined = '';
|
|
|
|
|
+ context = getContext(this);
|
|
|
|
|
|
|
|
@State showCoverApiDialog: boolean = false
|
|
@State showCoverApiDialog: boolean = false
|
|
|
@State tempCoverApiUrl: string = ''
|
|
@State tempCoverApiUrl: string = ''
|
|
@@ -47,6 +53,11 @@ export struct SettingPage {
|
|
|
static readonly IS_SHOW_SIMI: string = 'isShowSimi';
|
|
static readonly IS_SHOW_SIMI: string = 'isShowSimi';
|
|
|
static readonly IS_SHOW_FAV: string = 'isShowFAV';
|
|
static readonly IS_SHOW_FAV: string = 'isShowFAV';
|
|
|
static readonly IS_SHOW_HISTORY: string = 'isShowHistory';
|
|
static readonly IS_SHOW_HISTORY: string = 'isShowHistory';
|
|
|
|
|
+ static readonly IS_CUSTOMIZE_BG: string = 'is_customize_bg';
|
|
|
|
|
+ static readonly IS_CUSTOMIZE_BG_PATH: string = 'is_customize_bg_path';
|
|
|
|
|
+ /** 当前断点类型(如大屏/小屏) */
|
|
|
|
|
+ @StorageProp('currentBreakpoint') currentBreakpoint: string = BreakpointTypeEnum.MD;
|
|
|
|
|
+
|
|
|
@State titleBarModel: TitleBar.Model = new TitleBar.Model()
|
|
@State titleBarModel: TitleBar.Model = new TitleBar.Model()
|
|
|
.setTitleTextStyle(FontStyle.Normal)
|
|
.setTitleTextStyle(FontStyle.Normal)
|
|
|
.setTitleBarStyle(TitleBar.BarStyle.TRANSPARENT)
|
|
.setTitleBarStyle(TitleBar.BarStyle.TRANSPARENT)
|
|
@@ -59,7 +70,6 @@ export struct SettingPage {
|
|
|
.setOnLeftClickListener(() => {
|
|
.setOnLeftClickListener(() => {
|
|
|
router.back()
|
|
router.back()
|
|
|
})
|
|
})
|
|
|
- .setTitleBarMinHeight(44)
|
|
|
|
|
.setTitleBarNormalPadding(0)
|
|
.setTitleBarNormalPadding(0)
|
|
|
@State verName: string = ''
|
|
@State verName: string = ''
|
|
|
|
|
|
|
@@ -128,10 +138,12 @@ export struct SettingPage {
|
|
|
this.isMediacodec = PreferencesUtil.getBooleanSync(SettingPage.IS_MIDIACODEC_OPEN, false)
|
|
this.isMediacodec = PreferencesUtil.getBooleanSync(SettingPage.IS_MIDIACODEC_OPEN, false)
|
|
|
this.isMusicMemoryPlay = PreferencesUtil.getBooleanSync(SettingPage.iS_MUSIC_MEMORY_PLAY, false)
|
|
this.isMusicMemoryPlay = PreferencesUtil.getBooleanSync(SettingPage.iS_MUSIC_MEMORY_PLAY, false)
|
|
|
this.isMusicBGCover = PreferencesUtil.getBooleanSync(SettingPage.iS_MUSIC_BG_COVER, true)
|
|
this.isMusicBGCover = PreferencesUtil.getBooleanSync(SettingPage.iS_MUSIC_BG_COVER, true)
|
|
|
-
|
|
|
|
|
|
|
+ this.sortType = PreferencesUtil.getNumberSync(SettingPage.SORT_TYPE, 4)
|
|
|
this.isShowSimi = PreferencesUtil.getBooleanSync(SettingPage.IS_SHOW_SIMI, false)
|
|
this.isShowSimi = PreferencesUtil.getBooleanSync(SettingPage.IS_SHOW_SIMI, false)
|
|
|
this.isShowFAV = PreferencesUtil.getBooleanSync(SettingPage.IS_SHOW_FAV, true)
|
|
this.isShowFAV = PreferencesUtil.getBooleanSync(SettingPage.IS_SHOW_FAV, true)
|
|
|
this.isShowHistory = PreferencesUtil.getBooleanSync(SettingPage.IS_SHOW_HISTORY, true)
|
|
this.isShowHistory = PreferencesUtil.getBooleanSync(SettingPage.IS_SHOW_HISTORY, true)
|
|
|
|
|
+ this.isCustomizeBg = PreferencesUtil.getBooleanSync(SettingPage.IS_CUSTOMIZE_BG, false)
|
|
|
|
|
+ this.customizeBgPath = PreferencesUtil.getStringSync(SettingPage.IS_CUSTOMIZE_BG_PATH, '')
|
|
|
|
|
|
|
|
// 从持久化存储中读取深色模式设置
|
|
// 从持久化存储中读取深色模式设置
|
|
|
const savedDarkMode = PreferencesUtil.getBooleanSync(SettingPage.IS_DARK_MODE, false);
|
|
const savedDarkMode = PreferencesUtil.getBooleanSync(SettingPage.IS_DARK_MODE, false);
|
|
@@ -184,6 +196,12 @@ export struct SettingPage {
|
|
|
|
|
|
|
|
build() {
|
|
build() {
|
|
|
Column() {
|
|
Column() {
|
|
|
|
|
+ Column(){
|
|
|
|
|
+ Line().width('100%').height('100%')
|
|
|
|
|
+ }
|
|
|
|
|
+ .height(this.currentBreakpoint !== BreakpointTypeEnum.SM?0:CommonConstants.TOP_HEIGHT)
|
|
|
|
|
+ .backgroundColor($r('app.color.title_bar_bg'))
|
|
|
|
|
+ .expandSafeArea([SafeAreaType.SYSTEM], [SafeAreaEdge.TOP])
|
|
|
TitleBar({ model: $titleBarModel })
|
|
TitleBar({ model: $titleBarModel })
|
|
|
Scroll() {
|
|
Scroll() {
|
|
|
Column() {
|
|
Column() {
|
|
@@ -220,7 +238,38 @@ export struct SettingPage {
|
|
|
.height(55)
|
|
.height(55)
|
|
|
|
|
|
|
|
Line().width('100%').height(0.3).backgroundColor($r('app.color.index_tab_unselected_font_color'))
|
|
Line().width('100%').height(0.3).backgroundColor($r('app.color.index_tab_unselected_font_color'))
|
|
|
- // 深色模式
|
|
|
|
|
|
|
+
|
|
|
|
|
+ Row() {
|
|
|
|
|
+ Text('自定义背景')
|
|
|
|
|
+ .margin({ left: 18 })
|
|
|
|
|
+ .fontSize(15)
|
|
|
|
|
+ .fontColor(Color.Gray)
|
|
|
|
|
+ .fontWeight(480)
|
|
|
|
|
+ .layoutWeight(1)
|
|
|
|
|
+ .bindSheet($$this.isCustomizeBgSheet, this.customizeBgSheet(), {
|
|
|
|
|
+ height: '90%',
|
|
|
|
|
+ dragBar: true,
|
|
|
|
|
+ showClose: true,
|
|
|
|
|
+ blurStyle: BlurStyle.Thin,
|
|
|
|
|
+ backgroundColor: Color.Transparent,
|
|
|
|
|
+ title: { title: '自定义背景' }
|
|
|
|
|
+ })
|
|
|
|
|
+
|
|
|
|
|
+ Blank()
|
|
|
|
|
+ // 右侧箭头
|
|
|
|
|
+ Image($r('app.media.arrow_right'))
|
|
|
|
|
+ .width(22)
|
|
|
|
|
+ .height(22)
|
|
|
|
|
+ .margin({ left: 20, right: 20 })
|
|
|
|
|
+ .align(Alignment.Center)
|
|
|
|
|
+ }
|
|
|
|
|
+ .height(55)
|
|
|
|
|
+ .onClick(() => {
|
|
|
|
|
+ this.isCustomizeBgSheet = !this.isCustomizeBgSheet;
|
|
|
|
|
+ })
|
|
|
|
|
+
|
|
|
|
|
+ Line().width('100%').height(0.3).backgroundColor($r('app.color.index_tab_unselected_font_color'))
|
|
|
|
|
+ // 显示私密音频
|
|
|
Row() {
|
|
Row() {
|
|
|
Text('显示私密音频')
|
|
Text('显示私密音频')
|
|
|
.margin({ left: 18 })
|
|
.margin({ left: 18 })
|
|
@@ -243,7 +292,7 @@ export struct SettingPage {
|
|
|
.height(55)
|
|
.height(55)
|
|
|
|
|
|
|
|
Line().width('100%').height(0.3).backgroundColor($r('app.color.index_tab_unselected_font_color'))
|
|
Line().width('100%').height(0.3).backgroundColor($r('app.color.index_tab_unselected_font_color'))
|
|
|
- // 深色模式
|
|
|
|
|
|
|
+ // 显示我的收藏
|
|
|
Row() {
|
|
Row() {
|
|
|
Text('显示我的收藏')
|
|
Text('显示我的收藏')
|
|
|
.margin({ left: 18 })
|
|
.margin({ left: 18 })
|
|
@@ -266,7 +315,7 @@ export struct SettingPage {
|
|
|
.height(55)
|
|
.height(55)
|
|
|
|
|
|
|
|
Line().width('100%').height(0.3).backgroundColor($r('app.color.index_tab_unselected_font_color'))
|
|
Line().width('100%').height(0.3).backgroundColor($r('app.color.index_tab_unselected_font_color'))
|
|
|
- // 深色模式
|
|
|
|
|
|
|
+ // 显示最近播放
|
|
|
Row() {
|
|
Row() {
|
|
|
Text('显示最近播放')
|
|
Text('显示最近播放')
|
|
|
.margin({ left: 18 })
|
|
.margin({ left: 18 })
|
|
@@ -351,6 +400,7 @@ export struct SettingPage {
|
|
|
.onSelect(async (_index: number, text?: string | undefined) => {
|
|
.onSelect(async (_index: number, text?: string | undefined) => {
|
|
|
this.sortType = _index
|
|
this.sortType = _index
|
|
|
PreferencesUtil.put(SettingPage.SORT_TYPE, this.sortType)
|
|
PreferencesUtil.put(SettingPage.SORT_TYPE, this.sortType)
|
|
|
|
|
+ ToastUtil.showToast('本设置重启才生效')
|
|
|
})
|
|
})
|
|
|
}
|
|
}
|
|
|
.height(55)
|
|
.height(55)
|
|
@@ -396,7 +446,7 @@ export struct SettingPage {
|
|
|
// 歌词API
|
|
// 歌词API
|
|
|
Row() {
|
|
Row() {
|
|
|
Text('歌词:')
|
|
Text('歌词:')
|
|
|
- .margin({ left: 38, right: 6 })
|
|
|
|
|
|
|
+ .margin({ left: 18, right: 6 })
|
|
|
.fontSize(15)
|
|
.fontSize(15)
|
|
|
.fontColor(Color.Gray)
|
|
.fontColor(Color.Gray)
|
|
|
Text(this.lyricApiUrl)
|
|
Text(this.lyricApiUrl)
|
|
@@ -404,21 +454,22 @@ export struct SettingPage {
|
|
|
.fontSize(15)
|
|
.fontSize(15)
|
|
|
.fontColor(Color.Gray)
|
|
.fontColor(Color.Gray)
|
|
|
.layoutWeight(1)
|
|
.layoutWeight(1)
|
|
|
- Image($r('app.media.edit'))
|
|
|
|
|
- .width(28)
|
|
|
|
|
- .height(28)
|
|
|
|
|
|
|
+ Image(this.isDarkMode?$r('app.media.rename2'):$r('app.media.ic_public_edit'))
|
|
|
|
|
+ .width(22)
|
|
|
|
|
+ .height(22)
|
|
|
.margin({ right: 18 })
|
|
.margin({ right: 18 })
|
|
|
- .onClick(() => {
|
|
|
|
|
- this.apiDialogType = 'lyric'
|
|
|
|
|
- this.tempApiUrl = this.lyricApiUrl
|
|
|
|
|
- this.apiDialogController.open()
|
|
|
|
|
- })
|
|
|
|
|
|
|
+
|
|
|
}
|
|
}
|
|
|
|
|
+ .onClick(() => {
|
|
|
|
|
+ this.apiDialogType = 'lyric'
|
|
|
|
|
+ this.tempApiUrl = this.lyricApiUrl
|
|
|
|
|
+ this.apiDialogController.open()
|
|
|
|
|
+ })
|
|
|
.height(55)
|
|
.height(55)
|
|
|
// 封面API
|
|
// 封面API
|
|
|
Row() {
|
|
Row() {
|
|
|
Text('封面:')
|
|
Text('封面:')
|
|
|
- .margin({ left: 38, right: 6 })
|
|
|
|
|
|
|
+ .margin({ left: 18, right: 6 })
|
|
|
.fontSize(15)
|
|
.fontSize(15)
|
|
|
.fontColor(Color.Gray)
|
|
.fontColor(Color.Gray)
|
|
|
Text(this.coverApiUrl)
|
|
Text(this.coverApiUrl)
|
|
@@ -426,16 +477,17 @@ export struct SettingPage {
|
|
|
.fontSize(15)
|
|
.fontSize(15)
|
|
|
.fontColor(Color.Gray)
|
|
.fontColor(Color.Gray)
|
|
|
.layoutWeight(1)
|
|
.layoutWeight(1)
|
|
|
- Image($r('app.media.edit'))
|
|
|
|
|
- .width(28)
|
|
|
|
|
- .height(28)
|
|
|
|
|
|
|
+ Image(this.isDarkMode?$r('app.media.rename2'):$r('app.media.ic_public_edit'))
|
|
|
|
|
+ .width(22)
|
|
|
|
|
+ .height(22)
|
|
|
.margin({ right: 18 })
|
|
.margin({ right: 18 })
|
|
|
- .onClick(() => {
|
|
|
|
|
- this.apiDialogType = 'cover'
|
|
|
|
|
- this.tempApiUrl = this.coverApiUrl
|
|
|
|
|
- this.apiDialogController.open()
|
|
|
|
|
- })
|
|
|
|
|
|
|
+
|
|
|
}
|
|
}
|
|
|
|
|
+ .onClick(() => {
|
|
|
|
|
+ this.apiDialogType = 'cover'
|
|
|
|
|
+ this.tempApiUrl = this.coverApiUrl
|
|
|
|
|
+ this.apiDialogController.open()
|
|
|
|
|
+ })
|
|
|
.height(55)
|
|
.height(55)
|
|
|
}
|
|
}
|
|
|
.backgroundColor($r('app.color.settings_background_main'))
|
|
.backgroundColor($r('app.color.settings_background_main'))
|
|
@@ -443,17 +495,138 @@ export struct SettingPage {
|
|
|
.margin({ left: 0, right: 0, top: 0, bottom: 10 })
|
|
.margin({ left: 0, right: 0, top: 0, bottom: 10 })
|
|
|
.padding(0)
|
|
.padding(0)
|
|
|
}
|
|
}
|
|
|
- .margin({ left: 25, right: 25, top: 2, bottom: 30 })
|
|
|
|
|
|
|
+ .margin({ left: 35, right: 35, top: 20, bottom: 30 })
|
|
|
.justifyContent(FlexAlign.Start)
|
|
.justifyContent(FlexAlign.Start)
|
|
|
}
|
|
}
|
|
|
.scrollBar(BarState.Auto)
|
|
.scrollBar(BarState.Auto)
|
|
|
.height('100%')
|
|
.height('100%')
|
|
|
.width('100%')
|
|
.width('100%')
|
|
|
- .margin({bottom:18})
|
|
|
|
|
|
|
+ .margin({bottom:40})
|
|
|
.backgroundColor($r('app.color.settings_background'))
|
|
.backgroundColor($r('app.color.settings_background'))
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
.height('100%')
|
|
.height('100%')
|
|
|
.expandSafeArea([SafeAreaType.SYSTEM], [SafeAreaEdge.BOTTOM])
|
|
.expandSafeArea([SafeAreaType.SYSTEM], [SafeAreaEdge.BOTTOM])
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ goSelectImage() {
|
|
|
|
|
+
|
|
|
|
|
+ let selectUris: Array<string> = [];
|
|
|
|
|
+ let photoPicker = new photoAccessHelper.PhotoViewPicker();
|
|
|
|
|
+ let photoSelectOptions = new photoAccessHelper.PhotoSelectOptions();
|
|
|
|
|
+ photoSelectOptions.MIMEType = photoAccessHelper.PhotoViewMIMETypes.IMAGE_TYPE; // 过滤选择媒体文件类型为IMAGE
|
|
|
|
|
+ photoSelectOptions.maxSelectNumber = 1; // 选择媒体文件的最大数目
|
|
|
|
|
+
|
|
|
|
|
+ photoPicker.select(photoSelectOptions).then(async (photoSelectResult: photoAccessHelper.PhotoSelectResult) => {
|
|
|
|
|
+
|
|
|
|
|
+ //用一个全局变量存储返回的uri
|
|
|
|
|
+ selectUris = photoSelectResult.photoUris;
|
|
|
|
|
+ console.info('photoViewPicker.select to file succeed and uris are:' + selectUris);
|
|
|
|
|
+ //使用fs.openSync接口,通过uri打开这个文件得到fd
|
|
|
|
|
+ let file = fileIo.openSync(selectUris[0], fileIo.OpenMode.READ_ONLY);
|
|
|
|
|
+ console.info('file fd: ' + file.fd);
|
|
|
|
|
+ let name = await MD5.digestSync('homeBg')
|
|
|
|
|
+ let imagePath = this.context.filesDir + FileUtil.separator + name
|
|
|
|
|
+ imagePath = fileUri.getUriFromPath(imagePath)
|
|
|
|
|
+ let file2 = fileIo.openSync(imagePath, fileIo.OpenMode.READ_WRITE | fileIo.OpenMode.CREATE)
|
|
|
|
|
+ fileIo.copyFileSync(file.fd, file2.fd)
|
|
|
|
|
+ fileIo.closeSync(file);
|
|
|
|
|
+ fileIo.closeSync(file2);
|
|
|
|
|
+
|
|
|
|
|
+ this.customizeBgPath = imagePath
|
|
|
|
|
+
|
|
|
|
|
+ PreferencesUtil.put(SettingPage.IS_CUSTOMIZE_BG_PATH, this.customizeBgPath)
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ }).catch((err: BusinessError) => {
|
|
|
|
|
+
|
|
|
|
|
+ console.error(`Invoke photoViewPicker.select failed, code is ${err.code}, message is ${err.message}`);
|
|
|
|
|
+
|
|
|
|
|
+ })
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Builder
|
|
|
|
|
+ customizeBgSheet() {
|
|
|
|
|
+ Scroll() {
|
|
|
|
|
+ Column() {
|
|
|
|
|
+ this.CustomizeBg()
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ .width('100%')
|
|
|
|
|
+ .height('100%')
|
|
|
|
|
+ }
|
|
|
|
|
+ @Builder
|
|
|
|
|
+ CustomizeBg() {
|
|
|
|
|
+ Column() {
|
|
|
|
|
+ Image( this.customizeBgPath)
|
|
|
|
|
+ .height('62%')
|
|
|
|
|
+ .alt($r('app.color.white'))
|
|
|
|
|
+ .objectFit( ImageFit.Contain)
|
|
|
|
|
+ .borderRadius(20)
|
|
|
|
|
+ .clip(true)
|
|
|
|
|
+ .margin({ left: 20,bottom:40 })
|
|
|
|
|
+
|
|
|
|
|
+ Row() {
|
|
|
|
|
+
|
|
|
|
|
+ Row() {
|
|
|
|
|
+
|
|
|
|
|
+ Button('选择图片')
|
|
|
|
|
+ .fontColor(Color.White)
|
|
|
|
|
+ .fontSize(12)
|
|
|
|
|
+ .height(48)
|
|
|
|
|
+ .width(100)
|
|
|
|
|
+ .backgroundColor($r('app.color.title_bar_bg'))
|
|
|
|
|
+ .stateEffect(true)
|
|
|
|
|
+ .margin({ right: 5, left: 12 })
|
|
|
|
|
+ .onClick(async () => {
|
|
|
|
|
+
|
|
|
|
|
+ this.goSelectImage()
|
|
|
|
|
+
|
|
|
|
|
+ })
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+ .height('100%')
|
|
|
|
|
+ .justifyContent(FlexAlign.Center)
|
|
|
|
|
+ .layoutWeight(1)
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+ .width('100%')
|
|
|
|
|
+ .height(58)
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ Column() {
|
|
|
|
|
+ Row() {
|
|
|
|
|
+ Text('自定义背景')
|
|
|
|
|
+ .margin({ left: 18 })
|
|
|
|
|
+ .fontSize(15)
|
|
|
|
|
+ .fontColor($r('app.color.text_color'))
|
|
|
|
|
+ .fontWeight(480)
|
|
|
|
|
+ .layoutWeight(1)
|
|
|
|
|
+ Toggle({ type: ToggleType.Switch, isOn: this.isCustomizeBg })
|
|
|
|
|
+ .selectedColor($r('app.color.tab_item_bg'))
|
|
|
|
|
+ .switchPointColor(Color.White)
|
|
|
|
|
+ .margin({ right: 18 })
|
|
|
|
|
+ .onChange((checked: boolean) => {
|
|
|
|
|
+ this.isCustomizeBg = checked;
|
|
|
|
|
+ PreferencesUtil.put(SettingPage.IS_CUSTOMIZE_BG, this.isCustomizeBg)
|
|
|
|
|
+ })
|
|
|
|
|
+ .width(50)
|
|
|
|
|
+ .height(30);
|
|
|
|
|
+ }
|
|
|
|
|
+ .height(55)
|
|
|
|
|
+ }
|
|
|
|
|
+ .backgroundColor($r('app.color.settings_background_main'))
|
|
|
|
|
+ .borderRadius(20)
|
|
|
|
|
+ .margin({ left: 30, right: 30, top: 0, bottom: 30 })
|
|
|
|
|
+ .padding(0)
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+ .margin({ bottom: 30 })
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
}
|
|
}
|