You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			304 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			Dart
		
	
			
		
		
	
	
			304 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			Dart
		
	
| import 'package:easy_localization/src/public_ext.dart';
 | |
| import 'package:flutter/material.dart';
 | |
| import 'package:flutter_svg/svg.dart';
 | |
| import 'package:mohem_flutter_app/extensions/int_extensions.dart';
 | |
| import 'package:mohem_flutter_app/extensions/string_extensions.dart';
 | |
| import 'package:mohem_flutter_app/extensions/widget_extensions.dart';
 | |
| import 'package:mohem_flutter_app/generated/locale_keys.g.dart';
 | |
| import 'package:shimmer/shimmer.dart';
 | |
| 
 | |
| class GetAttendanceTrackingShimmer extends StatelessWidget {
 | |
|   @override
 | |
|   Widget build(BuildContext context) {
 | |
|     return Container(
 | |
|       width: double.infinity,
 | |
|       height: double.infinity,
 | |
|       clipBehavior: Clip.antiAlias,
 | |
|       decoration: BoxDecoration(
 | |
|         color: Colors.white,
 | |
|         borderRadius: BorderRadius.circular(15),
 | |
|         boxShadow: [
 | |
|           BoxShadow(
 | |
|             color: const Color(0xff000000).withOpacity(.05),
 | |
|             blurRadius: 26,
 | |
|             offset: const Offset(0, -3),
 | |
|           ),
 | |
|         ],
 | |
|       ),
 | |
|       child: Stack(
 | |
|         alignment: Alignment.center,
 | |
|         children: [
 | |
|           // SvgPicture.asset("assets/images/"),
 | |
|           Column(
 | |
|             crossAxisAlignment: CrossAxisAlignment.start,
 | |
|             children: [
 | |
|               Expanded(
 | |
|                 child: Column(
 | |
|                   mainAxisSize: MainAxisSize.min,
 | |
|                   crossAxisAlignment: CrossAxisAlignment.start,
 | |
|                   children: [
 | |
|                     LocaleKeys.markAttendance.tr().toText14(color: Colors.white, isBold: true).toShimmer(),
 | |
|                     16.height,
 | |
|                     "07:55:12".toText10(color: Colors.white, isBold: true).toShimmer(),
 | |
|                     3.height,
 | |
|                     LocaleKeys.timeLeftToday.tr().toText10(color: Colors.white).toShimmer(),
 | |
|                     9.height,
 | |
|                     const ClipRRect(
 | |
|                       borderRadius: BorderRadius.all(
 | |
|                         Radius.circular(20),
 | |
|                       ),
 | |
|                       child: LinearProgressIndicator(
 | |
|                         value: 0.7,
 | |
|                         minHeight: 8,
 | |
|                         valueColor: const AlwaysStoppedAnimation<Color>(Colors.white),
 | |
|                         backgroundColor: const Color(0xff196D73),
 | |
|                       ),
 | |
|                     ).toShimmer(),
 | |
|                   ],
 | |
|                 ).paddingOnly(top: 12, right: 15, left: 12),
 | |
|               ),
 | |
|               Row(
 | |
|                 children: [
 | |
|                   Expanded(
 | |
|                     child: Column(
 | |
|                       mainAxisSize: MainAxisSize.min,
 | |
|                       crossAxisAlignment: CrossAxisAlignment.start,
 | |
|                       children: [
 | |
|                         LocaleKeys.checkIn.tr().toText12(color: Colors.white).toShimmer(),
 | |
|                       ],
 | |
|                     ).paddingOnly(left: 12),
 | |
|                   ),
 | |
|                   Container(
 | |
|                     width: 45,
 | |
|                     height: 45,
 | |
|                     // color: Colors.blue,
 | |
|                     padding: const EdgeInsets.only(left: 14, right: 14),
 | |
|                   ).toShimmer(),
 | |
|                 ],
 | |
|               ),
 | |
|             ],
 | |
|           ),
 | |
|         ],
 | |
|       ),
 | |
|     );
 | |
|   }
 | |
| }
 | |
| 
 | |
| class MenuShimmer extends StatelessWidget {
 | |
|   @override
 | |
|   Widget build(BuildContext context) {
 | |
|     return Container(
 | |
|       clipBehavior: Clip.antiAlias,
 | |
|       decoration: BoxDecoration(
 | |
|         color: Colors.white,
 | |
|         borderRadius: BorderRadius.circular(15),
 | |
|         boxShadow: [
 | |
|           BoxShadow(
 | |
|             color: const Color(0xff000000).withOpacity(.05),
 | |
|             blurRadius: 26,
 | |
|             offset: const Offset(0, -3),
 | |
|           ),
 | |
|         ],
 | |
|       ),
 | |
|       child: Column(
 | |
|         mainAxisAlignment: MainAxisAlignment.spaceBetween,
 | |
|         crossAxisAlignment: CrossAxisAlignment.start,
 | |
|         children: [
 | |
|           LocaleKeys.workList.tr().toText12(color: Colors.white).toShimmer(),
 | |
|           Row(
 | |
|             children: [
 | |
|               Expanded(
 | |
|                 flex: 3,
 | |
|                 child: 123.toString().toText10(color: Colors.white, isBold: true).toShimmer(),
 | |
|               ),
 | |
|               12.width,
 | |
|               SvgPicture.asset("assets/images/arrow_next.svg", color: Colors.white).toShimmer()
 | |
|             ],
 | |
|           )
 | |
|         ],
 | |
|       ).paddingOnly(left: 10, right: 10, bottom: 6, top: 6),
 | |
|     );
 | |
|   }
 | |
| }
 | |
| 
 | |
| class ServicesHeaderShimmer extends StatelessWidget {
 | |
|   @override
 | |
|   Widget build(BuildContext context) {
 | |
|     return Row(
 | |
|       crossAxisAlignment: CrossAxisAlignment.center,
 | |
|       children: [
 | |
|         Expanded(
 | |
|           child: Column(
 | |
|             crossAxisAlignment: CrossAxisAlignment.start,
 | |
|             mainAxisSize: MainAxisSize.min,
 | |
|             children: [
 | |
|               "Other".tr().toText10().toShimmer(),
 | |
|               6.height,
 | |
|               LocaleKeys.services.tr().toText12(isBold: true).toShimmer(),
 | |
|             ],
 | |
|           ),
 | |
|         ),
 | |
|         LocaleKeys.viewAllServices.tr().toText12(isUnderLine: true).toShimmer(),
 | |
|       ],
 | |
|     );
 | |
|   }
 | |
| }
 | |
| 
 | |
| class ServicesMenuShimmer extends StatelessWidget {
 | |
|   @override
 | |
|   Widget build(BuildContext context) {
 | |
|     return Container(
 | |
|       decoration: BoxDecoration(
 | |
|         color: Colors.white,
 | |
|         borderRadius: BorderRadius.circular(15),
 | |
|         boxShadow: [
 | |
|           BoxShadow(
 | |
|             color: const Color(0xff000000).withOpacity(.05),
 | |
|             blurRadius: 26,
 | |
|             offset: const Offset(0, -3),
 | |
|           ),
 | |
|         ],
 | |
|       ),
 | |
|       child: Column(
 | |
|         mainAxisAlignment: MainAxisAlignment.spaceBetween,
 | |
|         crossAxisAlignment: CrossAxisAlignment.start,
 | |
|         children: [
 | |
|           SvgPicture.asset("assets/images/monthly_attendance.svg").toShimmer(),
 | |
|           Column(
 | |
|             crossAxisAlignment: CrossAxisAlignment.start,
 | |
|             mainAxisAlignment: MainAxisAlignment.start,
 | |
|             children: [
 | |
|               "Attendan".toText11(isBold: false).toShimmer(),
 | |
|               5.height,
 | |
|               Row(
 | |
|                 crossAxisAlignment: CrossAxisAlignment.end,
 | |
|                 children: [
 | |
|                   Expanded(
 | |
|                     child: LocaleKeys.attendance.tr().toText11(isBold: false).toShimmer(),
 | |
|                   ),
 | |
|                   6.width,
 | |
|                   SvgPicture.asset("assets/images/arrow_next.svg").paddingOnly(bottom: 4).toShimmer()
 | |
|                 ],
 | |
|               ),
 | |
|             ],
 | |
|           )
 | |
|         ],
 | |
|       ).paddingOnly(left: 10, right: 10, bottom: 10, top: 12),
 | |
|     );
 | |
|   }
 | |
| }
 | |
| 
 | |
| 
 | |
| class MarathonBannerShimmer extends StatelessWidget {
 | |
|   const MarathonBannerShimmer({Key? key}) : super(key: key);
 | |
| 
 | |
|   @override
 | |
|   Widget build(BuildContext context) {
 | |
|     return Container(
 | |
|       decoration: BoxDecoration(
 | |
|         color: Colors.white,
 | |
|         borderRadius: BorderRadius.circular(15),
 | |
|         boxShadow: [
 | |
|           BoxShadow(
 | |
|             color: const Color(0xff000000).withOpacity(.05),
 | |
|             blurRadius: 26,
 | |
|             offset: const Offset(0, -3),
 | |
|           ),
 | |
|         ],
 | |
|       ),
 | |
|       child: Column(
 | |
|         mainAxisAlignment: MainAxisAlignment.spaceBetween,
 | |
|         crossAxisAlignment: CrossAxisAlignment.start,
 | |
|         children: [
 | |
|           SvgPicture.asset("assets/images/monthly_attendance.svg").toShimmer(),
 | |
|           Column(
 | |
|             crossAxisAlignment: CrossAxisAlignment.start,
 | |
|             mainAxisAlignment: MainAxisAlignment.start,
 | |
|             children: [
 | |
|               "Attendan".toText11(isBold: false).toShimmer(),
 | |
|               5.height,
 | |
|               Row(
 | |
|                 crossAxisAlignment: CrossAxisAlignment.end,
 | |
|                 children: [
 | |
|                   Expanded(
 | |
|                     child: LocaleKeys.attendance.tr().toText11(isBold: false).toShimmer(),
 | |
|                   ),
 | |
|                   6.width,
 | |
|                   SvgPicture.asset("assets/images/arrow_next.svg").paddingOnly(bottom: 4).toShimmer()
 | |
|                 ],
 | |
|               ),
 | |
|             ],
 | |
|           )
 | |
|         ],
 | |
|       ).paddingOnly(left: 10, right: 10, bottom: 10, top: 12),
 | |
|     );
 | |
|   }
 | |
| }
 | |
| 
 | |
| class ChatHomeShimmer extends StatelessWidget {
 | |
|   @override
 | |
|   Widget build(BuildContext context) {
 | |
|     return Container(
 | |
|         width: double.infinity,
 | |
|         padding: const EdgeInsets.symmetric(horizontal: 16.0, vertical: 16.0),
 | |
|         child: Column(
 | |
|           mainAxisSize: MainAxisSize.max,
 | |
|           children: <Widget>[
 | |
|             Expanded(
 | |
|               child: Shimmer.fromColors(
 | |
|                 baseColor: Colors.white,
 | |
|                 highlightColor: Colors.grey.shade100,
 | |
|                 child: ListView.builder(
 | |
|                   itemBuilder: (_, __) => Padding(
 | |
|                     padding: const EdgeInsets.only(bottom: 8.0),
 | |
|                     child: Row(
 | |
|                       crossAxisAlignment: CrossAxisAlignment.start,
 | |
|                       children: <Widget>[
 | |
|                         Container(
 | |
|                           width: 48.0,
 | |
|                           height: 48.0,
 | |
|                           decoration: BoxDecoration(color: Colors.white, borderRadius: BorderRadius.all(Radius.circular(40))),
 | |
|                         ),
 | |
|                         const Padding(
 | |
|                           padding: EdgeInsets.symmetric(horizontal: 8.0),
 | |
|                         ),
 | |
|                         Expanded(
 | |
|                           child: Column(
 | |
|                             crossAxisAlignment: CrossAxisAlignment.start,
 | |
|                             children: <Widget>[
 | |
|                               Container(
 | |
|                                 width: double.infinity,
 | |
|                                 height: 8.0,
 | |
|                                 color: Colors.white,
 | |
|                               ),
 | |
|                               const Padding(
 | |
|                                 padding: EdgeInsets.symmetric(vertical: 2.0),
 | |
|                               ),
 | |
|                               Container(
 | |
|                                 width: double.infinity,
 | |
|                                 height: 8.0,
 | |
|                                 color: Colors.white,
 | |
|                               ),
 | |
|                               const Padding(
 | |
|                                 padding: EdgeInsets.symmetric(vertical: 2.0),
 | |
|                               ),
 | |
|                               Container(
 | |
|                                 width: 40.0,
 | |
|                                 height: 8.0,
 | |
|                                 color: Colors.white,
 | |
|                               ),
 | |
|                             ],
 | |
|                           ),
 | |
|                         )
 | |
|                       ],
 | |
|                     ),
 | |
|                   ),
 | |
|                   itemCount: 6,
 | |
|                 ),
 | |
|               ),
 | |
|             ),
 | |
|           ],
 | |
|         ));
 | |
|   }
 | |
| }
 |