import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; import 'package:loader_overlay/loader_overlay.dart'; import '../../../app/app.dart'; import 'widgets/product_image_header.dart'; import 'widgets/product_info.dart'; import 'widgets/product_specification_tab.dart'; import 'widgets/product_sliver_appbar.dart'; class ProductDetailsPage extends StatelessWidget { final ProductModel model; ProductDetailsPage({required this.model}); @override Widget build(BuildContext context) { return GetX( init: ProductController(model), builder: (pc) => Scaffold( body: pc.state.isLoading.value ? CustomLoader() : SafeArea( top: false, child: LoaderOverlay( useDefaultLoading: false, overlayColor: Colors.transparent, overlayWidget: CustomLoader(), child: Scaffold( appBar: CustomAppbarWidget(leading: AppBarBackBtn()), body: SliverAppBarWithTabBar(model: model, pc: pc), bottomNavigationBar: Padding( padding: const EdgeInsets.only(left: 16.0, right: 16, bottom: 16.0, top: 8), child: ColoredButton( title: 'add_to_cart'.tr, callback: () => pc.onAddToCart(context, model), btnColor: ThemeColor.mainColor, ), ), ), ), ), ), ); } List buildSimpleProductScreen(ProductModel model) { return [ SizedBox(height: 20.h), ProductNameWidget(model: model), SizedBox(height: 20.h), ProductImageHeader(images: model.images, model: model), SizedBox(height: 20.h), ProductPriceWidget(model: model), SizedBox(height: 20.h), AppTheme.appColorDivider, Container( color: Colors.amber, height: 1.sh - 120.h * 2, // 120.h is appbar height child: ProductSpecificationsWidget( model: model, ), ), ]; } List buildConfigurableProductScreen(ProductController pc) { final selectedOption = pc.state.selectedOption.value; final List? simpleOptions = pc.state.simpleAttribute.value?.options; final selectedSimpleOption = pc.state.selectedSimpleOption.value; final List? optionProducts = selectedOption != null ? selectedOption.variants.products : []; final attrText = pc.state.attribute.value != null ? pc.state.attribute.value!.attribute.name : ''; final attrValue = pc.state.selectedOption.value != null ? pc.state.selectedOption.value!.option : ''; final List