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_chatbox_detail_dialog.dart'; import 'package:yumi/ui_kit/widgets/store/store_bag_page_helpers.dart'; import '../../../shared/data_sources/models/enum/sc_currency_type.dart'; import '../../../shared/data_sources/models/enum/sc_props_type.dart'; ///聊天气泡框 class StoreChatboxPage extends SCPageList { const StoreChatboxPage({super.key}); @override SCPageListState createState() => _StoreChatboxPageState(); } class _StoreChatboxPageState 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, coverHeight: 45.w, previewWidth: 88.w, previewHeight: 58.w, onDetailsTap: () => _showDetail(res.res), ); } ///加载数据 @override loadPage({ required int page, required Function(List) onSuccess, Function? onErr, }) async { try { List beans = []; var storeList = await SCStoreRepositoryImp().storeList( SCCurrencyType.GOLD.name, SCPropsType.CHAT_BUBBLE.name, ); for (var value in storeList) { beans.add(StoreListResBean(value, false)); } onSuccess(beans); } catch (e) { if (onErr != null) { onErr(); } } } void _showDetail(StoreListRes res) { SmartDialog.show( tag: "showPropsDetail", alignment: Alignment.bottomCenter, animationType: SmartAnimationType.fade, builder: (_) { return PropsStoreChatboxDetailDialog(res, disCount); }, ); } } class StoreListResBean { StoreListRes res; bool isSelecte = false; StoreListResBean(this.res, this.isSelecte); }