|  |  |  | @ -43,85 +43,88 @@ class BodyPartsListing extends StatelessWidget { | 
		
	
		
			
				|  |  |  |  |                 itemBuilder: (BuildContext context, int index) { | 
		
	
		
			
				|  |  |  |  |                   return SizedBox( height: 80, width: 80,).toShimmer2(isShow: isLoading); | 
		
	
		
			
				|  |  |  |  |                 })), | 
		
	
		
			
				|  |  |  |  |         GridView.builder( | 
		
	
		
			
				|  |  |  |  |           gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( | 
		
	
		
			
				|  |  |  |  |               crossAxisCount: 3, | 
		
	
		
			
				|  |  |  |  |               childAspectRatio: 85 / 107, | 
		
	
		
			
				|  |  |  |  |               crossAxisSpacing: 4.h, | 
		
	
		
			
				|  |  |  |  |               mainAxisSpacing: 21.h), | 
		
	
		
			
				|  |  |  |  |           physics: NeverScrollableScrollPhysics(), | 
		
	
		
			
				|  |  |  |  |           shrinkWrap: true, | 
		
	
		
			
				|  |  |  |  |           itemCount: parts.length, | 
		
	
		
			
				|  |  |  |  |           // padding: fullBody != null ? EdgeInsets.only(top: 16) : EdgeInsets.zero, | 
		
	
		
			
				|  |  |  |  |           padding: EdgeInsets.zero, | 
		
	
		
			
				|  |  |  |  |           itemBuilder: (BuildContext context, int index) { | 
		
	
		
			
				|  |  |  |  |             bool _isSelected = | 
		
	
		
			
				|  |  |  |  |                 selectedPart.any((file) => file.id == parts[index].id); | 
		
	
		
			
				|  |  |  |  |             return InkWell( | 
		
	
		
			
				|  |  |  |  |               onTap: () { | 
		
	
		
			
				|  |  |  |  |                 onPartSelected(parts[index]); | 
		
	
		
			
				|  |  |  |  |               }, | 
		
	
		
			
				|  |  |  |  |               child: AnimatedOpacity( | 
		
	
		
			
				|  |  |  |  |                 opacity: 1.0, | 
		
	
		
			
				|  |  |  |  |                 duration: Duration(milliseconds: 200), | 
		
	
		
			
				|  |  |  |  |                 child: Column( | 
		
	
		
			
				|  |  |  |  |                   crossAxisAlignment: CrossAxisAlignment.start, | 
		
	
		
			
				|  |  |  |  |                   children: [ | 
		
	
		
			
				|  |  |  |  |                     AspectRatio( | 
		
	
		
			
				|  |  |  |  |                       aspectRatio: 97 / 97, | 
		
	
		
			
				|  |  |  |  |                       child: FittedBox( | 
		
	
		
			
				|  |  |  |  |                         fit: BoxFit.fitWidth, | 
		
	
		
			
				|  |  |  |  |                         child: Stack( | 
		
	
		
			
				|  |  |  |  |                           alignment: Alignment.topRight, | 
		
	
		
			
				|  |  |  |  |                           children: [ | 
		
	
		
			
				|  |  |  |  |                             Container( | 
		
	
		
			
				|  |  |  |  |                               margin: EdgeInsets.only(top: 5.h, right: 5.h), | 
		
	
		
			
				|  |  |  |  |                               decoration: BoxDecoration( | 
		
	
		
			
				|  |  |  |  |                                 borderRadius: BorderRadius.circular(15.0), | 
		
	
		
			
				|  |  |  |  |                                 border: Border.all( | 
		
	
		
			
				|  |  |  |  |                                     color: _isSelected | 
		
	
		
			
				|  |  |  |  |                                         ? AppColors.primaryRedColor | 
		
	
		
			
				|  |  |  |  |                                         : AppColors.borderGrayColor, | 
		
	
		
			
				|  |  |  |  |                                     width: 2.h), | 
		
	
		
			
				|  |  |  |  |                               ), | 
		
	
		
			
				|  |  |  |  |                               child: LaserBodyParts().getCategoryImage(isMale, | 
		
	
		
			
				|  |  |  |  |                                   laserCategoryID, parts[index].mappingCode!), | 
		
	
		
			
				|  |  |  |  |                             ), | 
		
	
		
			
				|  |  |  |  |                             if (_isSelected) | 
		
	
		
			
				|  |  |  |  |         Visibility( | 
		
	
		
			
				|  |  |  |  |           visible: !isLoading, | 
		
	
		
			
				|  |  |  |  |           child: GridView.builder( | 
		
	
		
			
				|  |  |  |  |             gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( | 
		
	
		
			
				|  |  |  |  |                 crossAxisCount: 3, | 
		
	
		
			
				|  |  |  |  |                 childAspectRatio: 85 / 107, | 
		
	
		
			
				|  |  |  |  |                 crossAxisSpacing: 4.h, | 
		
	
		
			
				|  |  |  |  |                 mainAxisSpacing: 21.h), | 
		
	
		
			
				|  |  |  |  |             physics: NeverScrollableScrollPhysics(), | 
		
	
		
			
				|  |  |  |  |             shrinkWrap: true, | 
		
	
		
			
				|  |  |  |  |             itemCount: parts.length, | 
		
	
		
			
				|  |  |  |  |             // padding: fullBody != null ? EdgeInsets.only(top: 16) : EdgeInsets.zero, | 
		
	
		
			
				|  |  |  |  |             padding: EdgeInsets.zero, | 
		
	
		
			
				|  |  |  |  |             itemBuilder: (BuildContext context, int index) { | 
		
	
		
			
				|  |  |  |  |               bool _isSelected = | 
		
	
		
			
				|  |  |  |  |                   selectedPart.any((file) => file.id == parts[index].id); | 
		
	
		
			
				|  |  |  |  |               return InkWell( | 
		
	
		
			
				|  |  |  |  |                 onTap: () { | 
		
	
		
			
				|  |  |  |  |                   onPartSelected(parts[index]); | 
		
	
		
			
				|  |  |  |  |                 }, | 
		
	
		
			
				|  |  |  |  |                 child: AnimatedOpacity( | 
		
	
		
			
				|  |  |  |  |                   opacity: 1.0, | 
		
	
		
			
				|  |  |  |  |                   duration: Duration(milliseconds: 200), | 
		
	
		
			
				|  |  |  |  |                   child: Column( | 
		
	
		
			
				|  |  |  |  |                     crossAxisAlignment: CrossAxisAlignment.start, | 
		
	
		
			
				|  |  |  |  |                     children: [ | 
		
	
		
			
				|  |  |  |  |                       AspectRatio( | 
		
	
		
			
				|  |  |  |  |                         aspectRatio: 97 / 97, | 
		
	
		
			
				|  |  |  |  |                         child: FittedBox( | 
		
	
		
			
				|  |  |  |  |                           fit: BoxFit.fitWidth, | 
		
	
		
			
				|  |  |  |  |                           child: Stack( | 
		
	
		
			
				|  |  |  |  |                             alignment: Alignment.topRight, | 
		
	
		
			
				|  |  |  |  |                             children: [ | 
		
	
		
			
				|  |  |  |  |                               Container( | 
		
	
		
			
				|  |  |  |  |                                 width: 18.h, | 
		
	
		
			
				|  |  |  |  |                                 height: 18.h, | 
		
	
		
			
				|  |  |  |  |                                 child: Icon(Icons.done, | 
		
	
		
			
				|  |  |  |  |                                     color: Colors.white, size: 12.h), | 
		
	
		
			
				|  |  |  |  |                                 margin: EdgeInsets.only(top: 5.h, right: 5.h), | 
		
	
		
			
				|  |  |  |  |                                 decoration: BoxDecoration( | 
		
	
		
			
				|  |  |  |  |                                   color: AppColors.primaryRedColor, | 
		
	
		
			
				|  |  |  |  |                                   borderRadius: BorderRadius.circular(30.h), | 
		
	
		
			
				|  |  |  |  |                                   borderRadius: BorderRadius.circular(15.0), | 
		
	
		
			
				|  |  |  |  |                                   border: Border.all( | 
		
	
		
			
				|  |  |  |  |                                       color: _isSelected | 
		
	
		
			
				|  |  |  |  |                                           ? AppColors.primaryRedColor | 
		
	
		
			
				|  |  |  |  |                                           : AppColors.borderGrayColor, | 
		
	
		
			
				|  |  |  |  |                                       width: 2.h), | 
		
	
		
			
				|  |  |  |  |                                 ), | 
		
	
		
			
				|  |  |  |  |                                 child: LaserBodyParts().getCategoryImage(isMale, | 
		
	
		
			
				|  |  |  |  |                                     laserCategoryID, parts[index].mappingCode!), | 
		
	
		
			
				|  |  |  |  |                               ), | 
		
	
		
			
				|  |  |  |  |                           ], | 
		
	
		
			
				|  |  |  |  |                               if (_isSelected) | 
		
	
		
			
				|  |  |  |  |                                 Container( | 
		
	
		
			
				|  |  |  |  |                                   width: 18.h, | 
		
	
		
			
				|  |  |  |  |                                   height: 18.h, | 
		
	
		
			
				|  |  |  |  |                                   child: Icon(Icons.done, | 
		
	
		
			
				|  |  |  |  |                                       color: Colors.white, size: 12.h), | 
		
	
		
			
				|  |  |  |  |                                   decoration: BoxDecoration( | 
		
	
		
			
				|  |  |  |  |                                     color: AppColors.primaryRedColor, | 
		
	
		
			
				|  |  |  |  |                                     borderRadius: BorderRadius.circular(30.h), | 
		
	
		
			
				|  |  |  |  |                                   ), | 
		
	
		
			
				|  |  |  |  |                                 ), | 
		
	
		
			
				|  |  |  |  |                             ], | 
		
	
		
			
				|  |  |  |  |                           ), | 
		
	
		
			
				|  |  |  |  |                         ), | 
		
	
		
			
				|  |  |  |  |                       ), | 
		
	
		
			
				|  |  |  |  |                     ), | 
		
	
		
			
				|  |  |  |  |                     SizedBox(height: 6.h), | 
		
	
		
			
				|  |  |  |  |                     Expanded( | 
		
	
		
			
				|  |  |  |  |                       child: Text( | 
		
	
		
			
				|  |  |  |  |                         context | 
		
	
		
			
				|  |  |  |  |                             .read<BookAppointmentsViewModel>() | 
		
	
		
			
				|  |  |  |  |                             .getLaserProcedureNameWRTLanguage(parts[index]), | 
		
	
		
			
				|  |  |  |  |                         style: TextStyle( | 
		
	
		
			
				|  |  |  |  |                           fontSize: 12.fSize, | 
		
	
		
			
				|  |  |  |  |                           fontWeight: FontWeight.w600, | 
		
	
		
			
				|  |  |  |  |                           color: Color(0xff2B353E), | 
		
	
		
			
				|  |  |  |  |                           letterSpacing: -0.48, | 
		
	
		
			
				|  |  |  |  |                       SizedBox(height: 6.h), | 
		
	
		
			
				|  |  |  |  |                       Expanded( | 
		
	
		
			
				|  |  |  |  |                         child: Text( | 
		
	
		
			
				|  |  |  |  |                           context | 
		
	
		
			
				|  |  |  |  |                               .read<BookAppointmentsViewModel>() | 
		
	
		
			
				|  |  |  |  |                               .getLaserProcedureNameWRTLanguage(parts[index]), | 
		
	
		
			
				|  |  |  |  |                           style: TextStyle( | 
		
	
		
			
				|  |  |  |  |                             fontSize: 12.fSize, | 
		
	
		
			
				|  |  |  |  |                             fontWeight: FontWeight.w600, | 
		
	
		
			
				|  |  |  |  |                             color: Color(0xff2B353E), | 
		
	
		
			
				|  |  |  |  |                             letterSpacing: -0.48, | 
		
	
		
			
				|  |  |  |  |                           ), | 
		
	
		
			
				|  |  |  |  |                           maxLines: 1, | 
		
	
		
			
				|  |  |  |  |                         ), | 
		
	
		
			
				|  |  |  |  |                         maxLines: 1, | 
		
	
		
			
				|  |  |  |  |                       ), | 
		
	
		
			
				|  |  |  |  |                     ), | 
		
	
		
			
				|  |  |  |  |                   ], | 
		
	
		
			
				|  |  |  |  |                     ], | 
		
	
		
			
				|  |  |  |  |                   ), | 
		
	
		
			
				|  |  |  |  |                 ), | 
		
	
		
			
				|  |  |  |  |               ), | 
		
	
		
			
				|  |  |  |  |             ); | 
		
	
		
			
				|  |  |  |  |           }, | 
		
	
		
			
				|  |  |  |  |               ); | 
		
	
		
			
				|  |  |  |  |             }, | 
		
	
		
			
				|  |  |  |  |           ), | 
		
	
		
			
				|  |  |  |  |         ), | 
		
	
		
			
				|  |  |  |  |       ], | 
		
	
		
			
				|  |  |  |  |     ); | 
		
	
	
		
			
				
					|  |  |  | 
 |