fix:调整ios和android页面不一致的问题

This commit is contained in:
liyi 2025-08-04 15:54:19 +08:00
parent 79948ff405
commit 0ab9b5f03a

View File

@ -37,18 +37,29 @@ class _LockVoiceSettingState extends State<LockVoiceSetting> {
barTitle: '锁语音包设置'.tr, barTitle: '锁语音包设置'.tr,
haveBack: false, haveBack: false,
haveOtherLeftWidget: true, haveOtherLeftWidget: true,
leftWidget: TextButton( leftWidget: Container(
onPressed: () { width: 60.w, // leading区域宽度
eventBus child: TextButton(
.fire(RefreshLockListInfoDataEvent(isUnShowLoading: true)); onPressed: () {
Get.offAllNamed(Routers.starLockMain); eventBus
}, .fire(RefreshLockListInfoDataEvent(isUnShowLoading: true));
child: Text( Get.offAllNamed(Routers.starLockMain);
'跳过'.tr, },
style: TextStyle( style: TextButton.styleFrom(
color: Colors.white, padding: EdgeInsets.symmetric(horizontal: 4), //
fontSize: 24.sp, minimumSize: Size.zero, //
fontWeight: FontWeight.w500, tapTargetSize: MaterialTapTargetSize.shrinkWrap, //
),
child: FittedBox(
fit: BoxFit.scaleDown,
child: Text(
'跳过'.tr,
style: TextStyle(
color: Colors.white,
fontSize: 24.sp, //
fontWeight: FontWeight.w500,
),
),
), ),
), ),
), ),
@ -67,111 +78,92 @@ class _LockVoiceSettingState extends State<LockVoiceSetting> {
), ),
], ],
), ),
body: _buildBody(), body: Obx(
), () => ListView(
); padding: EdgeInsets.zero,
} children: [
//
Widget _buildBody() { Container(
return Obx( width: 1.sw,
() => SingleChildScrollView( color: Colors.white,
child: Column( child: Column(
children: [ children: List.generate(
Container( state.soundTypeList.length,
width: 1.sw, (index) {
decoration: BoxDecoration(color: Colors.white), final isLastItem =
child: ListView.builder( index == state.soundTypeList.length - 1;
itemCount: state.soundTypeList.length, final soundType = state.soundTypeList.value[index];
itemBuilder: (BuildContext context, int index) { return CommonItem(
// itemCount - 1 leftTitel: soundType,
final isLastItem = index == state.soundTypeList.length - 1; rightTitle: '',
isHaveLine: !isLastItem,
// platFormSet RxList<Platform> isHaveDirection: false,
final platform = state.soundTypeList.value[index]; isHaveRightWidget: true,
return CommonItem( rightWidget: Radio<String>(
leftTitel: state.soundTypeList.value[index], value: soundType,
rightTitle: '', groupValue: state.soundTypeList
isHaveLine: !isLastItem, .value[state.selectSoundTypeIndex.value],
// 线 activeColor: AppColors.mainColor,
isHaveDirection: false, onChanged: (value) {
isHaveRightWidget: true, if (value != null) {
rightWidget: Radio<String>( final newIndex = state.soundTypeList.value
// Radio 使 id .indexWhere((p) => p == value);
value: platform, if (newIndex != -1) {
// selectPlatFormIndex id state.selectSoundTypeIndex.value = newIndex;
groupValue: state.soundTypeList }
.value[state.selectSoundTypeIndex.value],
//
activeColor: AppColors.mainColor,
// Radio
onChanged: (value) {
if (value != null) {
setState(() {
// id
final newIndex = state.soundTypeList.value
.indexWhere((p) => p == value);
if (newIndex != -1) {
state.selectSoundTypeIndex.value = newIndex;
} }
}); },
} ),
}, action: () {
), state.selectSoundTypeIndex.value = index;
action: () { },
setState(() { );
state.selectSoundTypeIndex.value = index;
});
}, },
); ),
}, ),
shrinkWrap: true,
physics: const AlwaysScrollableScrollPhysics(),
), ),
), SizedBox(
SizedBox( height: 8.h,
height: 8.h, ),
), //
Column( Container(
children: _buildList(), color: Colors.transparent,
), child: Column(
], children: List.generate(
state.languages.length,
(index) {
final item = state.languages[index];
return CommonItem(
leftTitel: item.langText,
rightTitle: '',
isHaveLine: true,
isHaveDirection: false,
isHaveRightWidget: true,
rightWidget:
state.selectPassthroughListIndex.value == index
? Image(
image: const AssetImage(
'images/icon_item_checked.png'),
width: 30.w,
height: 30.w,
fit: BoxFit.contain,
)
: Container(),
action: () {
state.selectPassthroughListIndex.value = index;
},
);
},
),
),
),
],
),
), ),
), ),
); );
} }
List<Widget> _buildList() {
final appLocalLanguages = state.languages;
return List.generate(
appLocalLanguages.length,
(index) => _buildItem(
appLocalLanguages[index],
index,
),
);
}
_buildItem(PassthroughItem passthroughItem, index) {
return CommonItem(
leftTitel: passthroughItem.langText,
rightTitle: '',
isHaveLine: true,
isHaveDirection: false,
isHaveRightWidget: true,
rightWidget: state.selectPassthroughListIndex.value == index
? Image(
image: const AssetImage('images/icon_item_checked.png'),
width: 30.w,
height: 30.w,
fit: BoxFit.contain,
)
: Container(),
action: () {
state.selectPassthroughListIndex.value = index;
},
);
}
@override @override
void dispose() { void dispose() {
// TODO: implement dispose // TODO: implement dispose