import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:yumi/ui_kit/components/sc_page_list.dart'; import 'package:yumi/shared/data_sources/sources/repositories/sc_store_repository_imp.dart'; import 'package:yumi/shared/business_logic/models/res/store_list_res.dart'; import 'package:yumi/ui_kit/widgets/store/props_store_theme_detail_dialog.dart'; import 'package:yumi/ui_kit/widgets/store/store_bag_page_helpers.dart'; import 'package:yumi/modules/store/headdress/store_headdress_page.dart'; import '../../../shared/data_sources/models/enum/sc_currency_type.dart'; import '../../../shared/data_sources/models/enum/sc_props_type.dart'; ///房间主题 class StoreThemePage extends SCPageList { const StoreThemePage({super.key}); @override SCPageListState createState() => _StoreThemePagePageState(); } class _StoreThemePagePageState extends SCPageListState { //折扣 double disCount = 1; @override void initState() { super.initState(); enablePullUp = false; isGridView = true; gridViewCount = 3; padding = EdgeInsets.symmetric(horizontal: 6.w); backgroundColor = Colors.transparent; gridDelegate = SliverGridDelegateWithFixedCrossAxisCount( crossAxisCount: gridViewCount, mainAxisSpacing: 12.w, crossAxisSpacing: 12.w, childAspectRatio: 0.88, ); loadData(1); } @override Widget build(BuildContext context) { return Scaffold( backgroundColor: Colors.transparent, body: items.isEmpty && isLoading ? const SCStoreGridSkeleton() : buildList(context), ); } @override Widget buildItem(StoreListResBean res) { return SCStoreGridItemCard( res: res.res, discount: disCount, coverBorderRadius: BorderRadius.all(Radius.circular(8.w)), onDetailsTap: () => _showDetail(res.res), ); } void _showDetail(StoreListRes res) { SmartDialog.show( tag: "showPropsDetail", alignment: Alignment.bottomCenter, animationType: SmartAnimationType.fade, builder: (_) { return PropsStoreThemeDetailDialog(res, disCount); }, ); } ///加载数据 @override loadPage({ required int page, required Function(List) onSuccess, Function? onErr, }) async { try { List beans = []; var storeList = await SCStoreRepositoryImp().storeList( SCCurrencyType.GOLD.name, SCPropsType.THEME.name, ); for (var value in storeList) { beans.add(StoreListResBean(value, false)); } onSuccess(beans); } catch (e) { if (onErr != null) { onErr(); } } } }