Untitled
user_8529798
plain_text
9 months ago
6.5 kB
2
Indexable
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);
},
);
},
);
}
}
Editor is loading...
Leave a Comment