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
		
	
	
		
			7.5 KiB
		
	
	
	
		
			Dart
		
	
			
		
		
	
	
			312 lines
		
	
	
		
			7.5 KiB
		
	
	
	
		
			Dart
		
	
| import 'dart:convert';
 | |
| import 'dart:io';
 | |
| import 'dart:typed_data';
 | |
| import 'dart:ui';
 | |
| 
 | |
| import 'package:mohem_flutter_app/config/constants.dart';
 | |
| import 'package:mohem_flutter_app/theme/colors.dart';
 | |
| import 'package:mohem_flutter_app/widgets/txt.dart';
 | |
| import 'package:flutter/material.dart';
 | |
| import 'package:flutter_svg/svg.dart';
 | |
| 
 | |
| import 'package:sizer/sizer.dart';
 | |
| 
 | |
| Color getColorFromHex(String hexColor) {
 | |
|   hexColor = hexColor.toUpperCase().replaceAll('#', '');
 | |
| 
 | |
|   if (hexColor.length == 6) {
 | |
|     hexColor = 'FF' + hexColor;
 | |
|   }
 | |
| 
 | |
|   return Color(int.parse(hexColor, radix: 16));
 | |
| }
 | |
| 
 | |
| Widget spacerVertical(double v) {
 | |
|   return Container(
 | |
|     height: v,
 | |
|     width: double.infinity,
 | |
|   );
 | |
| }
 | |
| Future delay(int millis) async {
 | |
|   return await Future.delayed(Duration(milliseconds: millis));
 | |
| }
 | |
| 
 | |
| inkWellCorner({double? r}) {
 | |
|   return RoundedRectangleBorder(
 | |
|     borderRadius: BorderRadius.circular(r ?? 4),
 | |
|   );
 | |
| }
 | |
| 
 | |
| Widget spacerHorizontal(double v) {
 | |
|   return Container(
 | |
|     height: v,
 | |
|     width: v,
 | |
|   );
 | |
| }
 | |
| 
 | |
| Widget mHeight(double f) {
 | |
|   return Container(
 | |
|     width: f,
 | |
|     height: f,
 | |
|   );
 | |
| }
 | |
| 
 | |
| Widget mDivider(Color color, {double? h}) {
 | |
|   return Container(
 | |
|     width: double.infinity,
 | |
|     height: h ?? 1,
 | |
|     color: color,
 | |
|   );
 | |
| }
 | |
| 
 | |
| Widget mDivider3({double? h}) {
 | |
|   return Container(
 | |
|     width: double.infinity,
 | |
|     height: h ?? 1,
 | |
|     color: borderLightColor!.withOpacity(0.7) ?? Colors.transparent,
 | |
|   );
 | |
| }
 | |
| 
 | |
| Widget mDivider2(Color color, double w) {
 | |
|   return Container(
 | |
|     width: w,
 | |
|     height: 1,
 | |
|     color: color,
 | |
|   );
 | |
| }
 | |
| 
 | |
| InputDecoration txtField(String label) {
 | |
|   return new InputDecoration(
 | |
|     border: InputBorder.none,
 | |
|     focusedBorder: InputBorder.none,
 | |
|     enabledBorder: InputBorder.none,
 | |
|     errorBorder: InputBorder.none,
 | |
|     hintText: label,
 | |
|     hintStyle: TextStyle(color: Colors.grey),
 | |
|     disabledBorder: InputBorder.none,
 | |
|     isDense: false,
 | |
|     contentPadding: EdgeInsets.only(left: 15, right: 15),
 | |
|   );
 | |
| }
 | |
| 
 | |
| Widget mWidth(double f) {
 | |
|   return Container(
 | |
|     width: f,
 | |
|     height: f,
 | |
|   );
 | |
| }
 | |
| 
 | |
| Widget mFlex(int f) {
 | |
|   return Flexible(
 | |
|     flex: f,
 | |
|     child: Container(
 | |
|       width: double.infinity,
 | |
|       height: double.infinity,
 | |
|     ),
 | |
|   );
 | |
| }
 | |
| Widget mExp(int f) {
 | |
|   return Expanded(
 | |
|     flex: f,
 | |
|     child: Container(
 | |
|       width: double.infinity,
 | |
|     ),
 | |
|   );
 | |
| }
 | |
| 
 | |
| spacer() {
 | |
|   return SizedBox(
 | |
|     height: 8,
 | |
|   );
 | |
| }
 | |
| 
 | |
| Widget floatButton(String icon, {Color? color, required Function onClick, String? title}) {
 | |
|   return Padding(
 | |
|     padding: const EdgeInsets.only(top: 12, bottom: 12),
 | |
|     child: Column(
 | |
|       crossAxisAlignment: CrossAxisAlignment.center,
 | |
|       mainAxisAlignment: MainAxisAlignment.center,
 | |
|       children: [
 | |
|         FloatingActionButton(
 | |
|           onPressed: () {
 | |
|             onClick();
 | |
|           },
 | |
|           heroTag: icon,
 | |
|           backgroundColor: accentColor,
 | |
|           elevation: 4,
 | |
|           child: Container(
 | |
|             child: SvgPicture.asset(
 | |
|               categorySvgIcons + icon,
 | |
|               color: color,
 | |
|             ),
 | |
|             width: double.infinity,
 | |
|             height: double.infinity,
 | |
|             decoration: containerRadius(Colors.white, 200),
 | |
|             clipBehavior: Clip.antiAlias,
 | |
|             padding: EdgeInsets.all(15),
 | |
|             margin: EdgeInsets.all(1),
 | |
|           ),
 | |
|         ),
 | |
|         if (title != null) mHeight(2.w),
 | |
|         if (title != null)
 | |
|           Txt(
 | |
|             title,
 | |
|             fontSize: 12.sp,
 | |
|             bold: true,
 | |
|             color: headingColor,
 | |
|           )
 | |
|       ],
 | |
|     ),
 | |
|   );
 | |
| }
 | |
| 
 | |
| navigateTo(context, page) {
 | |
|   Navigator.push(context, MaterialPageRoute(builder: (context) => page));
 | |
| }
 | |
| 
 | |
| circularImage(String im, double width, double height) {
 | |
|   return new Container(width: 190.0, height: 190.0, decoration: new BoxDecoration(shape: BoxShape.circle, image: new DecorationImage(fit: BoxFit.fill, image: new AssetImage(im))));
 | |
| }
 | |
| 
 | |
| circularImage2(String im, double width, double height) {
 | |
|   return new Container(width: width, height: height, decoration: new BoxDecoration(shape: BoxShape.circle, image: new DecorationImage(fit: BoxFit.fill, image: new AssetImage(im))));
 | |
| }
 | |
| 
 | |
| cardRadius(double radius) {
 | |
|   return RoundedRectangleBorder(
 | |
|     side: BorderSide(color: Colors.transparent, width: 1),
 | |
|     borderRadius: BorderRadius.circular(radius),
 | |
|   );
 | |
| }
 | |
| 
 | |
| cardRadiusWithoutBorder(double radius) {
 | |
|   return RoundedRectangleBorder(
 | |
|     side: BorderSide(color: Colors.transparent, width: 1),
 | |
|     borderRadius: BorderRadius.circular(radius),
 | |
|   );
 | |
| }
 | |
| 
 | |
| Image imageFromBase64String(String base64String) {
 | |
|   return Image.memory(base64Decode(base64String));
 | |
| }
 | |
| 
 | |
| Uint8List dataFromBase64String(String base64String) {
 | |
|   return base64Decode(base64String);
 | |
| }
 | |
| 
 | |
| String base64String(Uint8List data) {
 | |
|   return base64Encode(data);
 | |
| }
 | |
| 
 | |
| Widget overLayWidget({double? width, double? height,List<Color>? color}) {
 | |
|   return Container(
 | |
|     width: width ?? double.infinity,
 | |
|     height: height ?? 60,
 | |
|     decoration: BoxDecoration(
 | |
|       gradient: LinearGradient(
 | |
|         colors: color!=null?color:[
 | |
|           Colors.black.withOpacity(0.2),
 | |
|           Colors.black.withOpacity(0.1),
 | |
|           Colors.black.withOpacity(0.004),
 | |
|         ],
 | |
|         begin: Alignment.topCenter,
 | |
|         end: Alignment.bottomCenter,
 | |
|         tileMode: TileMode.clamp,
 | |
|       ),
 | |
|     ),
 | |
|   );
 | |
| }
 | |
| 
 | |
| Decoration containerRadius(Color color, double r) {
 | |
|   return BoxDecoration(
 | |
|     color: color,
 | |
|     borderRadius: BorderRadius.all(Radius.circular(r)),
 | |
|   );
 | |
| }
 | |
| 
 | |
| Decoration containerRadiusTop({Color? color, double? r}) {
 | |
|   return BoxDecoration(
 | |
|     color: color ?? Colors.white,
 | |
|     borderRadius: BorderRadius.only(topRight: Radius.circular(r ?? 12), topLeft: Radius.circular(r ?? 12)),
 | |
|   );
 | |
| }
 | |
| 
 | |
| Decoration containerRadiusBorder(Color color, double r) {
 | |
|   return BoxDecoration(
 | |
|     color: Colors.transparent,
 | |
|     border: Border.all(color: color, width: 1),
 | |
|     borderRadius: BorderRadius.all(Radius.circular(r)),
 | |
|   );
 | |
| }
 | |
| 
 | |
| Decoration containerRadiusBottom(Color color, double r) {
 | |
|   return BoxDecoration(
 | |
|     color: color,
 | |
|     borderRadius: BorderRadius.only(bottomLeft: Radius.circular(r), bottomRight: Radius.circular(r)),
 | |
|   );
 | |
| }
 | |
| 
 | |
| ShapeBorder cardRadiusTop(double radius) {
 | |
|   return RoundedRectangleBorder(
 | |
|     side: BorderSide(color: Colors.transparent, width: 0),
 | |
|     borderRadius: BorderRadius.only(topLeft: Radius.circular(radius), topRight: Radius.circular(radius)),
 | |
|   );
 | |
| }
 | |
| 
 | |
| Decoration containerColorRadiusBorderWidth(Color background, double radius, Color color, double w) {
 | |
|   return BoxDecoration(
 | |
|     color: background,
 | |
|     border: Border.all(
 | |
|         width: w, //
 | |
|         color: color //                  <--- border width here
 | |
|         ),
 | |
|     borderRadius: BorderRadius.circular(radius),
 | |
|   );
 | |
| }
 | |
| 
 | |
| ShapeBorder cardRadiusTop2(double radius) {
 | |
|   return RoundedRectangleBorder(
 | |
|     borderRadius: BorderRadius.only(topLeft: Radius.circular(radius), topRight: Radius.circular(radius)),
 | |
|   );
 | |
| }
 | |
| 
 | |
| ShapeBorder cardRadiusBottom(double radius) {
 | |
|   return RoundedRectangleBorder(
 | |
|     borderRadius: BorderRadius.only(bottomLeft: Radius.circular(radius), bottomRight: Radius.circular(radius)),
 | |
|   );
 | |
| }
 | |
| 
 | |
| Decoration containerColorRadiusBorder(Color background, double radius, Color color) {
 | |
|   return BoxDecoration(
 | |
|     color: background,
 | |
|     border: Border.all(
 | |
|         width: 1, //
 | |
|         color: color //                  <--- border width here
 | |
|         ),
 | |
|     borderRadius: BorderRadius.circular(radius),
 | |
|   );
 | |
| }
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| //Decoration appGradient = BoxDecoration(
 | |
| //  gradient: LinearGradient(
 | |
| //    colors: [
 | |
| //      Colors.green[200],
 | |
| //      Colors.green,
 | |
| //    ],
 | |
| //    begin: Alignment.topCenter,
 | |
| //    end: Alignment.bottomCenter,
 | |
| //  ),
 | |
| //);
 | |
| // launchURL(String url) async {
 | |
| //   if (await canLaunch(url)) {
 | |
| //     await launch(url);
 | |
| //   } else {
 | |
| //     throw 'Could not launch $url';
 | |
| //   }
 | |
| // }
 |