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.
		
		
		
		
		
			
		
			
				
	
	
		
			312 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			Dart
		
	
			
		
		
	
	
			312 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			Dart
		
	
| import 'package:hmg_patient_app_new/core/utils/size_utils.dart';
 | |
| import 'package:auto_size_text/auto_size_text.dart';
 | |
| import 'package:flutter/cupertino.dart';
 | |
| import 'package:intl/intl.dart';
 | |
| import 'package:hmg_patient_app_new/theme/colors.dart';
 | |
| import 'package:sizer/sizer.dart';
 | |
| 
 | |
| extension CapExtension on String {
 | |
|   String get toCamelCase => "${this[0].toUpperCase()}${this.substring(1)}";
 | |
| 
 | |
|   String get inCaps => '${this[0].toUpperCase()}${this.substring(1)}';
 | |
| 
 | |
|   String get allInCaps => this.toUpperCase();
 | |
| 
 | |
|   String get capitalizeFirstofEach => this.trim().length > 0 ? this.trim().toLowerCase().split(" ").map((str) => str.inCaps).join(" ") : "";
 | |
| }
 | |
| 
 | |
| extension EmailValidator on String {
 | |
|   Widget get toWidget => Text(this);
 | |
| 
 | |
|   Widget toText8({Color? color, bool isBold = false, int? maxlines, FontStyle? fontStyle, TextOverflow? textOverflow}) => Text(
 | |
|         this,
 | |
|         maxLines: maxlines,
 | |
|         overflow: textOverflow,
 | |
|         style: TextStyle(
 | |
|           fontSize: 8.fSize,
 | |
|           fontStyle: fontStyle ?? FontStyle.normal,
 | |
|           fontWeight: isBold ? FontWeight.bold : FontWeight.normal,
 | |
|           color: color ?? blackColor,
 | |
|           letterSpacing: 0.64,
 | |
|         ),
 | |
|       );
 | |
| 
 | |
|   Widget toText10({Color? color, bool isBold = false, bool isUnderLine = false, int? maxlines, FontStyle? fontStyle, TextOverflow? textOverflow}) => Text(
 | |
|         this,
 | |
|         maxLines: maxlines,
 | |
|         overflow: textOverflow,
 | |
|         style: TextStyle(
 | |
|             fontSize: 10.fSize,
 | |
|             fontStyle: fontStyle ?? FontStyle.normal,
 | |
|             fontWeight: isBold ? FontWeight.bold : FontWeight.normal,
 | |
|             color: color ?? blackColor,
 | |
|             letterSpacing: 0.64,
 | |
|             decoration: isUnderLine ? TextDecoration.underline : null,
 | |
|             decorationColor: color ?? blackColor),
 | |
|       );
 | |
| 
 | |
|   Widget toText11({Color? color, FontWeight? weight, bool isUnderLine = false, bool isCenter = false, bool isBold = false, int maxLine = 0, double letterSpacing = 0.64}) => Text(
 | |
|         this,
 | |
|         textAlign: isCenter ? TextAlign.center : null,
 | |
|         maxLines: (maxLine > 0) ? maxLine : null,
 | |
|         softWrap: true,
 | |
|         style: TextStyle(
 | |
|           fontSize: 11.fSize,
 | |
|           fontWeight: weight ?? (isBold ? FontWeight.bold : FontWeight.normal),
 | |
|           color: color ?? blackColor,
 | |
|           letterSpacing: letterSpacing,
 | |
|           decoration: isUnderLine ? TextDecoration.underline : null,
 | |
|         ),
 | |
|       );
 | |
| 
 | |
|   Widget toText12({Color? color, bool isUnderLine = false, bool isBold = false, bool isCenter = false, int maxLine = 0}) => Text(
 | |
|         this,
 | |
|         textAlign: isCenter ? TextAlign.center : null,
 | |
|         maxLines: (maxLine > 0) ? maxLine : null,
 | |
|         style: TextStyle(
 | |
|           fontSize: 12.fSize,
 | |
|           fontWeight: isBold ? FontWeight.bold : FontWeight.normal,
 | |
|           color: color ?? blackColor,
 | |
|           letterSpacing: 0.64,
 | |
|           decorationColor: isUnderLine ? blackColor : null,
 | |
|           decoration: isUnderLine ? TextDecoration.underline : null,
 | |
|         ),
 | |
|       );
 | |
| 
 | |
|   Widget toText12Auto({Color? color, bool isUnderLine = false, bool isBold = false, bool isCenter = false, int maxLine = 0}) => AutoSizeText(
 | |
|         this,
 | |
|         textAlign: isCenter ? TextAlign.center : null,
 | |
|         maxLines: (maxLine > 0) ? maxLine : null,
 | |
|         minFontSize: 8,
 | |
|         style: TextStyle(
 | |
|           fontSize: 12.fSize,
 | |
|           fontWeight: isBold ? FontWeight.bold : FontWeight.normal,
 | |
|           color: color ?? blackColor,
 | |
|           letterSpacing: 0.64,
 | |
|           decoration: isUnderLine ? TextDecoration.underline : null,
 | |
|         ),
 | |
|       );
 | |
| 
 | |
|   Widget toTextAuto({
 | |
|     Color? color,
 | |
|     bool isUnderLine = false,
 | |
|     bool isBold = false,
 | |
|     bool isCenter = false,
 | |
|     int maxLine = 0,
 | |
|     double fontSize = 12,
 | |
|     double letterSpacing = 0.64,
 | |
|     double height = 1,
 | |
|     TextOverflow? textOverflow,
 | |
|     FontWeight? fontWeight,
 | |
|   }) =>
 | |
|       AutoSizeText(
 | |
|         this,
 | |
|         textAlign: isCenter ? TextAlign.center : null,
 | |
|         maxLines: (maxLine > 0) ? maxLine : null,
 | |
|         minFontSize: 5,
 | |
|         overflow: textOverflow,
 | |
|         softWrap: true,
 | |
|         style: TextStyle(
 | |
|           fontSize: fontSize,
 | |
|           fontWeight: fontWeight ?? (isBold ? FontWeight.bold : FontWeight.normal),
 | |
|           color: color ?? blackColor,
 | |
|           letterSpacing: letterSpacing,
 | |
|           decoration: isUnderLine ? TextDecoration.underline : null,
 | |
|         ),
 | |
|       );
 | |
| 
 | |
|   Widget toText13({
 | |
|     Color? color,
 | |
|     bool isUnderLine = false,
 | |
|     bool isBold = false,
 | |
|     bool isCenter = false,
 | |
|     int maxLine = 0,
 | |
|   }) =>
 | |
|       Text(
 | |
|         this,
 | |
|         textAlign: isCenter ? TextAlign.center : null,
 | |
|         maxLines: (maxLine > 0) ? maxLine : null,
 | |
|         style: TextStyle(
 | |
|             fontSize: 13.fSize, fontWeight: isBold ? FontWeight.bold : FontWeight.normal, color: color ?? blackColor, letterSpacing: 0.64, decoration: isUnderLine ? TextDecoration.underline : null),
 | |
|       );
 | |
| 
 | |
|   Widget toText14({Color? color, bool isUnderLine = false, bool isBold = false, bool isCenter = false, FontWeight? weight, int? maxlines}) => Text(
 | |
|         this,
 | |
|         textAlign: isCenter ? TextAlign.center : null,
 | |
|         maxLines: maxlines,
 | |
|         style: TextStyle(
 | |
|             color: color ?? blackColor,
 | |
|             fontSize: 14.fSize,
 | |
|             letterSpacing: 0.64,
 | |
|             fontWeight: weight ?? (isBold ? FontWeight.bold : FontWeight.normal),
 | |
|             decoration: isUnderLine ? TextDecoration.underline : null),
 | |
|       );
 | |
| 
 | |
|   Widget toText15({Color? color, bool isUnderLine = false, bool isBold = false, bool isCenter = false, FontWeight? weight, int? maxlines}) => Text(
 | |
|         this,
 | |
|         textAlign: isCenter ? TextAlign.center : null,
 | |
|         maxLines: maxlines,
 | |
|         style: TextStyle(
 | |
|             color: color ?? blackColor,
 | |
|             fontSize: 15.fSize,
 | |
|             letterSpacing: 0.64,
 | |
|             fontWeight: weight ?? (isBold ? FontWeight.bold : FontWeight.normal),
 | |
|             decoration: isUnderLine ? TextDecoration.underline : null),
 | |
|       );
 | |
| 
 | |
|   Widget toText16({
 | |
|     Color? color,
 | |
|     bool isUnderLine = false,
 | |
|     bool isBold = false,
 | |
|     bool isCenter = false,
 | |
|     int? maxlines,
 | |
|     TextAlign? textAlign,
 | |
|   }) =>
 | |
|       Text(
 | |
|         this,
 | |
|         maxLines: maxlines,
 | |
|         textAlign: isCenter ? TextAlign.center : null,
 | |
|         style: TextStyle(
 | |
|           color: color ?? blackColor,
 | |
|           fontSize: 16.fSize,
 | |
|           letterSpacing: 0.64,
 | |
|           fontWeight: isBold ? FontWeight.bold : FontWeight.normal,
 | |
|           decoration: isUnderLine ? TextDecoration.underline : null,
 | |
|         ),
 | |
|       );
 | |
| 
 | |
|   Widget toText17({Color? color, bool isBold = false, bool isCenter = false}) => Text(
 | |
|         this,
 | |
|         textAlign: isCenter ? TextAlign.center : null,
 | |
|         style: TextStyle(color: color ?? blackColor, fontSize: 17.fSize, letterSpacing: 0.64, fontWeight: isBold ? FontWeight.bold : FontWeight.normal),
 | |
|       );
 | |
| 
 | |
|   Widget toText18({Color? color, bool isBold = false, bool isCenter = false, int? maxlines}) => Text(
 | |
|         maxLines: maxlines,
 | |
|         textAlign: isCenter ? TextAlign.center : null,
 | |
|         this,
 | |
|         style: TextStyle(fontSize: 18.fSize, fontWeight: isBold ? FontWeight.bold : FontWeight.normal, color: color ?? blackColor, letterSpacing: 0.64),
 | |
|       );
 | |
| 
 | |
|   Widget toText19({Color? color, bool isBold = false}) => Text(
 | |
|         this,
 | |
|         style: TextStyle(fontSize: 19.fSize, fontWeight: isBold ? FontWeight.bold : FontWeight.normal, color: color ?? blackColor, letterSpacing: 0.64),
 | |
|       );
 | |
| 
 | |
|   Widget toText20({Color? color, bool isBold = false}) => Text(
 | |
|         this,
 | |
|         style: TextStyle(fontSize: 20.fSize, fontWeight: isBold ? FontWeight.bold : FontWeight.normal, color: color ?? blackColor, letterSpacing: 0.64),
 | |
|       );
 | |
| 
 | |
|   Widget toText21({Color? color, bool isBold = false, FontWeight? weight, int? maxlines}) => Text(
 | |
|         this,
 | |
|         maxLines: maxlines,
 | |
|         style: TextStyle(color: color ?? blackColor, fontSize: 21.fSize, letterSpacing: 0.64, fontWeight: weight ?? (isBold ? FontWeight.bold : FontWeight.normal)),
 | |
|       );
 | |
| 
 | |
|   Widget toText22({Color? color, bool isBold = false, bool isCenter = false}) => Text(
 | |
|         this,
 | |
|         textAlign: isCenter ? TextAlign.center : null,
 | |
|         style: TextStyle(height: 1, color: color ?? blackColor, fontSize: 22.fSize, letterSpacing: 0.64, fontWeight: isBold ? FontWeight.bold : FontWeight.normal),
 | |
|       );
 | |
| 
 | |
|   Widget toText24({Color? color, bool isBold = false, bool isCenter = false}) => Text(
 | |
|         this,
 | |
|         textAlign: isCenter ? TextAlign.center : null,
 | |
|         style: TextStyle(height: 23 / 24, color: color ?? blackColor, fontSize: 24.fSize, letterSpacing: 0.64, fontWeight: isBold ? FontWeight.bold : FontWeight.normal),
 | |
|       );
 | |
| 
 | |
|   Widget toText32({Color? color, bool isBold = false, bool isCenter = false}) => Text(
 | |
|         this,
 | |
|         textAlign: isCenter ? TextAlign.center : null,
 | |
|         style: TextStyle(height: 32 / 32, color: color ?? blackColor, fontSize: 32.fSize, letterSpacing: 0.64, fontWeight: isBold ? FontWeight.bold : FontWeight.normal),
 | |
|       );
 | |
| 
 | |
|   Widget toText44({Color? color, bool isBold = false}) => Text(
 | |
|         this,
 | |
|         style: TextStyle(height: 32 / 32, color: color ?? blackColor, fontSize: 44.fSize, letterSpacing: 0.64, fontWeight: isBold ? FontWeight.bold : FontWeight.normal),
 | |
|       );
 | |
| 
 | |
|   Widget toSectionHeading({String upperHeading = "", String lowerHeading = ""}) {
 | |
|     String upper = "";
 | |
|     String lower = "";
 | |
|     String heading = this;
 | |
|     if (heading.isNotEmpty) {
 | |
|       List<String> data = heading.split(" ");
 | |
| 
 | |
|       if (data.length > 1) {
 | |
|         upper = data[0];
 | |
|         data.removeAt(0);
 | |
|         lower = data.join(" ");
 | |
|       } else {
 | |
|         lower = data[0];
 | |
|       }
 | |
|     }
 | |
|     if (upperHeading.isNotEmpty) {
 | |
|       upper = upperHeading;
 | |
|     }
 | |
|     if (lowerHeading.isNotEmpty) {
 | |
|       lower = lowerHeading;
 | |
|     }
 | |
| 
 | |
|     return Column(
 | |
|       crossAxisAlignment: CrossAxisAlignment.start,
 | |
|       mainAxisSize: MainAxisSize.min,
 | |
|       children: [
 | |
|         if (upper.isNotEmpty) upper.toText12(),
 | |
|         lower.toText24(isBold: true),
 | |
|       ],
 | |
|     );
 | |
|   }
 | |
| 
 | |
|   bool isValidEmail() {
 | |
|     return RegExp(r'^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$').hasMatch(this);
 | |
|   }
 | |
| 
 | |
|   String toFormattedDate() {
 | |
|     String date = this.split("T")[0];
 | |
|     String time = this.split("T")[1];
 | |
|     var dates = date.split("-");
 | |
|     return "${dates[2]} ${getMonth(int.parse(dates[1]))} ${dates[0]} ${DateFormat('hh:mm a').format(DateFormat('hh:mm:ss').parse(time))}";
 | |
|   }
 | |
| 
 | |
|   String getMonth(int month) {
 | |
|     switch (month) {
 | |
|       case 1:
 | |
|         return "January";
 | |
|       case 2:
 | |
|         return "February";
 | |
|       case 3:
 | |
|         return "March";
 | |
|       case 4:
 | |
|         return "April";
 | |
|       case 5:
 | |
|         return "May";
 | |
|       case 6:
 | |
|         return "June";
 | |
|       case 7:
 | |
|         return "July";
 | |
|       case 8:
 | |
|         return "August";
 | |
|       case 9:
 | |
|         return "September";
 | |
|       case 10:
 | |
|         return "October";
 | |
|       case 11:
 | |
|         return "November";
 | |
|       case 12:
 | |
|         return "December";
 | |
|       default:
 | |
|         return "";
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   String truncate(int max, {String suffix = ''}) {
 | |
|     try {
 | |
|       return length <= max ? this : '${substring(0, max - suffix.length)}$suffix';
 | |
|     } catch (e) {
 | |
|       return this;
 | |
|     }
 | |
|   }
 | |
| }
 |