diff --git a/packages/chicken/lib/presentation/pages/poultry_science/inspection/logic.dart b/packages/chicken/lib/presentation/pages/poultry_science/inspection/logic.dart index 0c375fe..411de5e 100644 --- a/packages/chicken/lib/presentation/pages/poultry_science/inspection/logic.dart +++ b/packages/chicken/lib/presentation/pages/poultry_science/inspection/logic.dart @@ -38,7 +38,7 @@ class InspectionPoultryScienceLogic extends GetxController { super.onInit(); routesName.value = ['اقدام'].toList(); - routesName.add(selectedSegmentIndex.value == 0 ? 'بازرسی' : 'بایگانی'); + ever(selectedSegmentIndex, (callback) { routesName.removeLast(); routesName.add(callback == 0 ? 'بازرسی' : 'بایگانی'); diff --git a/packages/chicken/lib/presentation/pages/poultry_science/inspection/view.dart b/packages/chicken/lib/presentation/pages/poultry_science/inspection/view.dart index 19bcba4..e2308d4 100644 --- a/packages/chicken/lib/presentation/pages/poultry_science/inspection/view.dart +++ b/packages/chicken/lib/presentation/pages/poultry_science/inspection/view.dart @@ -23,7 +23,7 @@ class InspectionPoultrySciencePage extends GetView controller.setSearchValue(data), backId: poultryFirstKey, - routes: controller.routesName, + routesWidget: ContainerBreadcrumb(rxRoutes: controller.routesName), widgets: [ SizedBox(height: 50, child: segmentWidget()), ObxValue((data) { @@ -514,13 +514,23 @@ class InspectionPoultrySciencePage extends GetView Container( height: 100.h, clipBehavior: Clip.hardEdge, - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(8.r), - image: DecorationImage( - image: NetworkImage(item.image?[index] ?? ''), - fit: BoxFit.cover, - ), + child: Image.network( + item.image?[index] ?? '', + loadingBuilder: (context, child, loadingProgress) { + if (loadingProgress == null) return child; + return Padding(padding: EdgeInsetsGeometry.all(80), + + child: CircularProgressIndicator( + color: AppColor.blueDark, + value: loadingProgress.expectedTotalBytes != null + ? loadingProgress.cumulativeBytesLoaded / + (loadingProgress.expectedTotalBytes ?? 1) + : null, + ), + ); + }, ), + decoration: BoxDecoration(borderRadius: BorderRadius.circular(8.r)), ), ), ), diff --git a/packages/chicken/lib/presentation/widget/base_page/view.dart b/packages/chicken/lib/presentation/widget/base_page/view.dart index 698583a..bbb944f 100644 --- a/packages/chicken/lib/presentation/widget/base_page/view.dart +++ b/packages/chicken/lib/presentation/widget/base_page/view.dart @@ -50,7 +50,7 @@ class ChickenBasePage extends GetView { final VoidCallback? onNotificationTap; final List? routes; - final Breadcrumb? routesWidget; + final Widget? routesWidget; final List? widgets; final Widget? child; final bool scrollable; diff --git a/packages/core/lib/presentation/widget/base_page/view.dart b/packages/core/lib/presentation/widget/base_page/view.dart index 0fed56f..ed65c9a 100644 --- a/packages/core/lib/presentation/widget/base_page/view.dart +++ b/packages/core/lib/presentation/widget/base_page/view.dart @@ -19,7 +19,7 @@ class BasePage extends GetView { }); final List? routes; - final Breadcrumb? routesWidget; + final Widget? routesWidget; final List? widgets; final Widget? child; final bool scrollable; diff --git a/packages/core/lib/presentation/widget/base_page/widgets/breadcrumb.dart b/packages/core/lib/presentation/widget/base_page/widgets/breadcrumb.dart index 42d8f55..ac936a8 100644 --- a/packages/core/lib/presentation/widget/base_page/widgets/breadcrumb.dart +++ b/packages/core/lib/presentation/widget/base_page/widgets/breadcrumb.dart @@ -2,13 +2,14 @@ import 'package:flutter/material.dart'; import 'package:rasadyar_core/core.dart'; abstract class Breadcrumb extends StatelessWidget { - const Breadcrumb({super.key, this.routes}); + const Breadcrumb({super.key, this.routes, this.rxRoutes}); final List? routes; + final RxList? rxRoutes; } class TextBreadcrumb extends Breadcrumb { - const TextBreadcrumb({super.key, super.routes}); + const TextBreadcrumb({super.key, super.routes, super.rxRoutes}); @override Widget build(BuildContext context) { @@ -23,14 +24,22 @@ class TextBreadcrumb extends Breadcrumb { } class ContainerBreadcrumb extends Breadcrumb { - const ContainerBreadcrumb({super.key, super.routes}); + const ContainerBreadcrumb({super.key, super.routes, super.rxRoutes}) + : assert( + (routes != null && rxRoutes == null) || (routes == null && rxRoutes != null), + 'Only one of routes or rxRoutes should be provided', + ); @override Widget build(BuildContext context) { - if (routes?.isEmpty ?? true) { + if ((routes?.isEmpty ?? true) && (rxRoutes?.isEmpty ?? true)) { return SizedBox.shrink(); } - return buildContainerPageRoute(routes!); + if (rxRoutes != null) { + return buildRXContainerPageRoute(rxRoutes!); + } else { + return buildContainerPageRoute(routes!); + } } Widget buildContainerPageRoute(List route) { @@ -62,4 +71,39 @@ class ContainerBreadcrumb extends Breadcrumb { ], ); } + + Widget buildRXContainerPageRoute(RxList routes) { + return Row( + children: [ + Container( + height: 24.h, + margin: EdgeInsets.symmetric(horizontal: 8.w, vertical: 4.h), + decoration: BoxDecoration(color: Colors.white, borderRadius: BorderRadius.circular(2.r)), + padding: EdgeInsets.symmetric(horizontal: 6.w), + child: ObxValue((data) { + return ListView.separated( + scrollDirection: Axis.horizontal, + physics: NeverScrollableScrollPhysics(), + shrinkWrap: true, + itemBuilder: (context, index) { + var tmp = data[index]; + return Center( + child: Text( + tmp, + style: AppFonts.yekan14.copyWith(color: AppColor.labelTextColor), + ), + ); + }, + separatorBuilder: (context, index) => Assets.vec.arrowLeftSvg.svg( + height: 24.h, + fit: BoxFit.fitHeight, + colorFilter: ColorFilter.mode(Color(0xFFD6DEEE), BlendMode.srcIn), + ), + itemCount: data.length, + ); + }, routes), + ), + ], + ); + } }