Untitled
import 'package:Buildeffective/src/model/spaces_response.dart'; import 'package:Buildeffective/src/screens/product_aggregation_screen/product_aggregation_common_widgets/expansion_widget_with_title_count.dart'; import 'package:Buildeffective/src/screens/product_aggregation_screen/product_aggregation_screens/product_aggregation_list_screen.dart'; import 'package:Buildeffective/src/screens/product_aggregation_screen/product_aggregation_viewmodels/product_aggregation_viewmodel.dart'; import 'package:Buildeffective/src/ui_component/sticky_header/widget.dart'; import 'package:Buildeffective/src/utils/comman_export.dart'; import 'package:flutter/material.dart'; import 'package:flutter_mobx/flutter_mobx.dart'; import 'package:flutter_svg/flutter_svg.dart'; import 'package:get_it/get_it.dart'; import 'package:nb_utils/nb_utils.dart'; class ProductSpaceWidget extends StatefulWidget { const ProductSpaceWidget({Key? key}) : super(key: key); @override State<ProductSpaceWidget> createState() => _ProductSpaceWidgetState(); } class _ProductSpaceWidgetState extends State<ProductSpaceWidget> { late ProductAggregationViewModel productAggregationViewModel; final ScrollController scrollController = ScrollController(); @override void initState() { super.initState(); init(); } void init() async { productAggregationViewModel = GetIt.instance<ProductAggregationViewModel>(); } @override void setState(fn) { if (mounted) super.setState(fn); } void onHeadingTap({required UnitSpace unitData}) { ProductAggregationListScreen( productListTitlePojo: ProductListTitlePojo( title: unitData.finalName.validate(), subTitle: "", slug: unitData.slug.validate(), isProductAggregationBySpace: true, ), isFromSpace: true, ).launch(context); } void onHeadingChildTap({required UnitSpace unitData, required UnitSpace unitChildData}) { ProductAggregationListScreen( productListTitlePojo: ProductListTitlePojo( title: unitChildData.aliasName.validate(), subTitle: unitData.aliasName.validate(), slug: unitChildData.slug!, isProductAggregationBySpace: true, ), isFromSpace: true, ).launch(context); } @override Widget build(BuildContext context) { if (productAggregationViewModel.getProductAggregationSpaceList.isEmpty) return NoDataWidget( title: "No Products available\n to add in this space", titleTextStyle: BETextStyles.BodyStyleWithDarkGrey3Color, imageWidget: SvgPicture.asset(ResImages.ic_empty_product_icon, color: BEColors.darkGrey, height: 58, width: 58), ); return Observer( builder: (context) { String text = productAggregationViewModel.searchText.validate(); if (productAggregationViewModel.getSearchResult(list: productAggregationViewModel.getProductAggregationSpaceList).isEmpty) { return NoDataWidget( title: "No Search Results Found", titleTextStyle: BETextStyles.BodyStyleWithDarkGrey3Color, imageWidget: SvgPicture.asset(ResImages.ic_empty_product_icon, color: BEColors.darkGrey, height: 58, width: 58), ); } return ListView.separated( controller: scrollController, itemCount: productAggregationViewModel.getSearchResult(list: productAggregationViewModel.getProductAggregationSpaceList).length, itemBuilder: (context, index) { UnitSpace unitData = productAggregationViewModel.getSearchResult(list: productAggregationViewModel.getProductAggregationSpaceList)[index]; return StickyHeaderBuilder( controller: scrollController, overlapHeaders: false, builder: (BuildContext context, double stuckAmount) { return ColoredBox( color: Colors.white, child: ExpansionWidgetWithTitleCount( isSelected: false, leftPadding: 0, hideArrowButton: true, hideArrowButtonSpace: false, onTap: () { onHeadingTap(unitData: unitData); }, verticalPadding: 8, titleTextStyle: BETextStyles.TitleStyle600With14DarkBlueColor, title: unitData.finalName.validate(), count: unitData.productsCount.validate() == 0 ? null : unitData.productsCount.validate().toString(), ), ); }, content: unitData.childUnitSpaces.validate().isNotEmpty ? Column( children: [ Divider(height: 0), ListView.separated( itemCount: unitData.childUnitSpaces!.length, shrinkWrap: true, physics: NeverScrollableScrollPhysics(), itemBuilder: (context, index) { UnitSpace childUnitData = unitData.childUnitSpaces![index]; return ColoredBox( color: Colors.white, child: ExpansionWidgetWithTitleCount( isSelected: false, leftPadding: 26, hideArrowButton: true, hideArrowButtonSpace: false, onTap: () { onHeadingChildTap(unitData: unitData, unitChildData: childUnitData); }, verticalPadding: 10, title: childUnitData.finalName.validate(), count: childUnitData.productsCount.validate() == 0 ? null : childUnitData.productsCount.validate().toString(), ), ); }, separatorBuilder: (BuildContext context, int index) { return Divider(height: 0); }, ) ], ) : Offstage(), ); }, separatorBuilder: (BuildContext context, int index) { return Divider(height: 0); }, ); }, ); } }
Leave a Comment