Merge branch 'master' of https://gitlab.com/mirza.shafique/car_common_app into faiz_development_common

 Conflicts:
	lib/extensions/string_extensions.dart
	lib/generated/codegen_loader.g.dart
	lib/generated/locale_keys.g.dart
	lib/widgets/common_widgets/app_bar.dart
merge-requests/8/head
FaizHashmiCS22 3 years ago
commit ed8c1d741a

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="20.243" height="17.99" viewBox="0 0 20.243 17.99">
<path id="edit" d="M14.149,3.02l3.17,3.17a.344.344,0,0,1,0,.485L9.643,14.351l-3.261.362a.684.684,0,0,1-.756-.756L5.989,10.7,13.664,3.02A.344.344,0,0,1,14.149,3.02Zm5.693-.8L18.127.5a1.374,1.374,0,0,0-1.94,0L14.943,1.745a.344.344,0,0,0,0,.485l3.17,3.17a.344.344,0,0,0,.485,0l1.244-1.244A1.374,1.374,0,0,0,19.842,2.216ZM13.5,12.263v3.578H2.249V4.595h8.076a.432.432,0,0,0,.3-.123L12.03,3.066a.422.422,0,0,0-.3-.72H1.687A1.687,1.687,0,0,0,0,4.033V16.4A1.687,1.687,0,0,0,1.687,18.09H14.058A1.687,1.687,0,0,0,15.744,16.4V10.858a.422.422,0,0,0-.72-.3l-1.406,1.406A.432.432,0,0,0,13.5,12.263Z" transform="translate(0 -0.1)" fill="#28323a"/>
</svg>

After

Width:  |  Height:  |  Size: 740 B

@ -100,7 +100,7 @@ class MyAssets {
static String bcIntro = "${assetPath}images/bc_intro.svg";
static String bnLogo = "${assetPath}images/bn_logo.svg";
static String icCar = "${assetPath}images/ic_car.svg";
static String icEdit = "${assetPath}images/ic_edit.svg";
static String icEdit = "${assetPath}icons/ic_edit.svg";
static String icEmail = "${assetPath}images/ic_email.svg";
static String icLock = "${assetPath}images/ic_lock.svg";
static String icLogout = "${assetPath}images/ic_logout.svg";

@ -1,22 +1,23 @@
import 'package:flutter/cupertino.dart';
import 'package:intl/intl.dart';
import 'package:mc_common_app/theme/colors.dart';
import 'package:auto_size_text/auto_size_text.dart';
extension EmailValidator on String {
Widget toText({
Color? color,
bool isSemiBold = false,
bool isBold = false,
double? fontSize,
bool isUnderLine = false,
TextDecoration? textDecoration,
double letterSpacing = -0.4,
TextAlign? textAlign,
double? height,
}) =>
Text(
Widget toText(
{Color? color,
bool isBold = false,
double? fontSize,
bool isUnderLine = false,
TextDecoration? textDecoration,
double letterSpacing = -0.4,
TextAlign? textAlign,
double? height,
int? maxLines}) =>
AutoSizeText(
this,
textAlign: textAlign,
maxLines: maxLines,
style: TextStyle(
height: height,
decoration: isUnderLine ? TextDecoration.underline : textDecoration ?? TextDecoration.none,

@ -185,8 +185,7 @@ class CodegenLoader extends AssetLoader{
"accessories_modifications": "الملحقات والتعديلات",
"my_recent_providers": "مزودي الخدمة الجدد",
"my_active_ads": "إعلاناتي النشطة",
"recommended_Ads": "الإعلانات الموصى بها",
"location": "موقع"
"recommended_Ads": "الإعلانات الموصى بها"
};
static const Map<String,dynamic> en_US = {
"firstTimeLogIn": "First Time Log In",
@ -359,9 +358,7 @@ static const Map<String,dynamic> en_US = {
"accessories_modifications": "Accessories and Modifications",
"my_recent_providers": "My Recent Service Providers",
"my_active_ads": "My Active Ads",
"recommended_Ads": "Recommended Ads",
"select_services": "Select services you want",
"location": "Location"
"recommended_Ads": "Recommended Ads"
};
static const Map<String, Map<String,dynamic>> mapLocales = {"ar_SA": ar_SA, "en_US": en_US};
}

@ -150,6 +150,5 @@ abstract class LocaleKeys {
static const my_recent_providers = 'my_recent_providers';
static const my_active_ads = 'my_active_ads';
static const recommended_Ads = 'recommended_Ads';
static const location = 'location';
}

@ -6,10 +6,10 @@ class MyColors {
static const Color accentColor = Colors.blue;
static const Color lightTextColor = Color(0xff969696);
static const Color textColor = Color(0xff777777);
static const Color darkTextColor = Color(0xff28323A);
static const Color textFieldColor = Color(0xffF3F5F7);
static const Color darkIconColor = Color(0xff28323A);
static const Color lightIconColor = Color(0xff767676);
static const Color darkTextColor = Color(0xff2B353E);
static const Color normalTextColor = Color(0xff5A5A5A);
static const Color gradiantStartColor = Color(0xff33c0a5);
static const Color gradiantEndColor = Color(0xff259db7);

@ -3,7 +3,7 @@ import 'package:mc_common_app/extensions/string_extensions.dart';
import 'package:mc_common_app/generated/locale_keys.g.dart';
import 'package:mc_common_app/view_models/user_view_model.dart';
import 'package:mc_common_app/widgets/common_widgets/app_bar.dart';
import 'package:mc_common_app/widgets/show_fill_button.dart';
import 'package:mc_common_app/widgets/button/show_fill_button.dart';
import 'package:mc_common_app/widgets/txt_field.dart';
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';

@ -3,7 +3,7 @@ import 'package:mc_common_app/extensions/string_extensions.dart';
import 'package:mc_common_app/generated/locale_keys.g.dart';
import 'package:mc_common_app/view_models/user_view_model.dart';
import 'package:mc_common_app/widgets/common_widgets/app_bar.dart';
import 'package:mc_common_app/widgets/show_fill_button.dart';
import 'package:mc_common_app/widgets/button/show_fill_button.dart';
import 'package:mc_common_app/widgets/txt_field.dart';
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';

@ -3,7 +3,7 @@ import 'package:mc_common_app/extensions/string_extensions.dart';
import 'package:mc_common_app/generated/locale_keys.g.dart';
import 'package:mc_common_app/view_models/user_view_model.dart';
import 'package:mc_common_app/widgets/common_widgets/app_bar.dart';
import 'package:mc_common_app/widgets/show_fill_button.dart';
import 'package:mc_common_app/widgets/button/show_fill_button.dart';
import 'package:mc_common_app/widgets/txt_field.dart';
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';

@ -5,7 +5,7 @@ import 'package:mc_common_app/generated/locale_keys.g.dart';
import 'package:mc_common_app/models/user/register_user.dart';
import 'package:mc_common_app/view_models/user_view_model.dart';
import 'package:mc_common_app/widgets/common_widgets/app_bar.dart';
import 'package:mc_common_app/widgets/show_fill_button.dart';
import 'package:mc_common_app/widgets/button/show_fill_button.dart';
import 'package:mc_common_app/widgets/txt_field.dart';
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';

@ -4,7 +4,7 @@ import 'package:mc_common_app/extensions/int_extensions.dart';
import 'package:mc_common_app/generated/locale_keys.g.dart';
import 'package:mc_common_app/view_models/user_view_model.dart';
import 'package:mc_common_app/widgets/common_widgets/app_bar.dart';
import 'package:mc_common_app/widgets/show_fill_button.dart';
import 'package:mc_common_app/widgets/button/show_fill_button.dart';
import 'package:mc_common_app/widgets/txt_field.dart';
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';

@ -4,7 +4,7 @@ import 'package:mc_common_app/extensions/string_extensions.dart';
import 'package:mc_common_app/generated/locale_keys.g.dart';
import 'package:mc_common_app/view_models/user_view_model.dart';
import 'package:mc_common_app/widgets/common_widgets/app_bar.dart';
import 'package:mc_common_app/widgets/show_fill_button.dart';
import 'package:mc_common_app/widgets/button/show_fill_button.dart';
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
@ -26,7 +26,7 @@ class _ConfirmNewPasswordPageState extends State<ConfirmNewPasswordPage> {
Widget build(BuildContext context) {
UserVM userVM = context.read<UserVM>();
return Scaffold(
appBar: CustomAppBar( isRemoveBackButton: true, title: LocaleKeys.forgetPassword.tr()),
appBar: CustomAppBar(isRemoveBackButton: true, title: LocaleKeys.forgetPassword.tr()),
body: SingleChildScrollView(
child: Container(
// width: double.infinity,
@ -34,7 +34,11 @@ class _ConfirmNewPasswordPageState extends State<ConfirmNewPasswordPage> {
padding: const EdgeInsets.all(40),
child: Column(
children: [
LocaleKeys.newPassword.tr().toText(height: 23 / 24, fontSize: 24, letterSpacing: -1.44,),
LocaleKeys.newPassword.tr().toText(
height: 23 / 24,
fontSize: 24,
letterSpacing: -1.44,
),
12.height,
TextFormField(
decoration: InputDecoration(

@ -8,7 +8,7 @@ import 'package:mc_common_app/generated/locale_keys.g.dart';
import 'package:mc_common_app/view_models/user_view_model.dart';
import 'package:mc_common_app/widgets/common_widgets/app_bar.dart';
import 'package:mc_common_app/widgets/dropdown/dropdow_field.dart';
import 'package:mc_common_app/widgets/show_fill_button.dart';
import 'package:mc_common_app/widgets/button/show_fill_button.dart';
import 'package:mc_common_app/widgets/tab/login_email_tab.dart';
import 'package:mc_common_app/widgets/txt_field.dart';
import 'package:easy_localization/easy_localization.dart';

@ -10,7 +10,7 @@ import 'package:mc_common_app/utils/navigator.dart';
import 'package:mc_common_app/view_models/user_view_model.dart';
import 'package:mc_common_app/widgets/common_widgets/app_bar.dart';
import 'package:mc_common_app/widgets/dropdown/dropdow_field.dart';
import 'package:mc_common_app/widgets/show_fill_button.dart';
import 'package:mc_common_app/widgets/button/show_fill_button.dart';
import 'package:mc_common_app/widgets/tab/login_email_tab.dart';
import 'package:mc_common_app/widgets/txt_field.dart';
import 'package:easy_localization/easy_localization.dart';

@ -6,7 +6,7 @@ import 'package:mc_common_app/utils/utils.dart';
import 'package:mc_common_app/view_models/user_view_model.dart';
import 'package:mc_common_app/widgets/common_widgets/app_bar.dart';
import 'package:mc_common_app/widgets/dropdown/dropdow_field.dart';
import 'package:mc_common_app/widgets/show_fill_button.dart';
import 'package:mc_common_app/widgets/button/show_fill_button.dart';
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';

@ -10,7 +10,7 @@ import 'package:mc_common_app/view_models/user_view_model.dart';
import 'package:mc_common_app/widgets/common_widgets/app_bar.dart';
import 'package:mc_common_app/widgets/dropdown/dropdow_field.dart';
import 'package:mc_common_app/widgets/show_fill_button.dart';
import 'package:mc_common_app/widgets/button/show_fill_button.dart';
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
import 'package:mc_common_app/widgets/tab/role_type_tab.dart';

@ -8,7 +8,7 @@ import 'package:mc_common_app/generated/locale_keys.g.dart';
import 'package:mc_common_app/utils/enums.dart';
import 'package:mc_common_app/utils/navigator.dart';
import 'package:mc_common_app/utils/utils.dart';
import 'package:mc_common_app/widgets/show_fill_button.dart';
import 'package:mc_common_app/widgets/button/show_fill_button.dart';
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';

@ -1,6 +1,6 @@
import 'package:flutter/material.dart';
import 'package:mc_common_app/widgets/show_fill_button.dart';
import 'package:mc_common_app/widgets/button/show_fill_button.dart';
class ShowCardButton extends StatelessWidget {
String title;

@ -1,8 +1,7 @@
import 'package:flutter/material.dart';
import 'package:mc_common_app/extensions/string_extensions.dart';
import '../theme/colors.dart';
import '../../theme/colors.dart';
class ShowFillButton extends StatelessWidget {
String title;
@ -10,6 +9,7 @@ class ShowFillButton extends StatelessWidget {
Color txtColor;
double elevation, radius, maxWidth, maxHeight, fontSize, horizontalPadding, horizontalMargin, verticalMargin;
bool isFlatButton, isBold;
EdgeInsets? margin;
ShowFillButton({
required this.title,
@ -25,6 +25,7 @@ class ShowFillButton extends StatelessWidget {
this.isBold = true,
this.horizontalMargin = 0,
this.verticalMargin = 0,
this.margin,
});
@override
@ -38,31 +39,35 @@ class ShowFillButton extends StatelessWidget {
right: 20,
),
)
: ConstrainedBox(
constraints: BoxConstraints(
minHeight: maxHeight,
minWidth: maxWidth,
maxHeight: maxHeight,
maxWidth: maxWidth,
: Padding(
padding: margin ?? const EdgeInsets.all(0.0),
child: ConstrainedBox(
constraints: BoxConstraints(
minHeight: maxHeight,
minWidth: maxWidth,
maxHeight: maxHeight,
maxWidth: maxWidth,
),
child: showButton(),
),
child: showButton(),
);
}
Widget showButton() {
return Container(
// decoration: isFlatButton ? null : MyColors.gradientButton,
color:isFlatButton ? null : MyColors.darkPrimaryColor,
color: isFlatButton ? null : MyColors.darkPrimaryColor,
margin: EdgeInsets.symmetric(horizontal: horizontalMargin, vertical: verticalMargin),
child: MaterialButton(
onPressed: onPressed,
shape: new RoundedRectangleBorder(
borderRadius: new BorderRadius.circular(radius),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(radius),
),
child: title.toText(
fontSize: fontSize,
isBold: isBold,
color: txtColor,
maxLines: 1,
),
),
);

@ -1,4 +1,3 @@
import 'package:flutter/material.dart';
import 'package:mc_common_app/classes/consts.dart';
import 'package:mc_common_app/extensions/int_extensions.dart';

@ -72,6 +72,7 @@ class CustomAppBar extends StatelessWidget with PreferredSizeWidget {
final String profileImageUrl;
final bool isDrawerEnabled;
final VoidCallback? onTap;
final double? leadingWidth;
const CustomAppBar({
Key? key,
@ -86,46 +87,72 @@ class CustomAppBar extends StatelessWidget with PreferredSizeWidget {
this.isTitleCenter,
this.titleColor,
this.onTap,
this.leadingWidth,
}) : super(key: key);
@override
Widget build(BuildContext context) {
return AppBar(
automaticallyImplyLeading: false,
leadingWidth: 100,
backgroundColor: backgroundColor ?? appBackgroundColor,
elevation: elevation ?? 0,
centerTitle: isTitleCenter ?? true,
leading: isDrawerEnabled
? InkWell(
onTap: onTap,
child: Row(
children: [
Image.asset(
profileImageUrl,
width: 34,
height: 34,
fit: BoxFit.fill,
).toCircle(borderRadius: 100),
10.width,
SvgPicture.asset(MyAssets.dashboardDrawerIcon),
],
).paddingOnly(left: 21),
)
: isRemoveBackButton
? null
: IconButton(
icon: const Icon(Icons.arrow_back_ios, color: Colors.black),
onPressed: () => Navigator.of(context).pop(),
),
iconTheme: IconThemeData(
color: backIconColor ?? Colors.black, //change your color here
),
actions: actions,
title: (title ?? "").toText(fontSize: 20, isBold: true),
return Column(
children: [
AppBar(
leadingWidth: leadingWidth??61,
backgroundColor: backgroundColor ?? Colors.white,
elevation: elevation ?? 0,
centerTitle: isTitleCenter ?? true,
leading: isDrawerEnabled
? InkWell(
onTap: onTap,
child: Row(
children: [
Image.asset(
profileImageUrl,
width: 34,
height: 34,
fit: BoxFit.fill,
).toCircle(borderRadius: 100),
10.width,
SvgPicture.asset(MyAssets.dashboardDrawerIcon),
],
).paddingOnly(left: 21),
)
: isRemoveBackButton
? null
: Row(
children: [
21.width,
IconButton(
icon: const Icon(
Icons.arrow_back_ios,
color: Colors.black,
size: 16,
),
onPressed: () => onTap??Navigator.of(context).pop(),
).toContainer(
paddingAll: 0,
borderRadius: 100,
borderColor: MyColors.lightGreyEFColor,
isEnabledBorder: true,
height: 40,
width: 40,
),
],
),
iconTheme: IconThemeData(
color: backIconColor ?? Colors.black, //change your color here
),
actions: actions,
title: (title ?? "").toText(fontSize: 20, isBold: true),
),
if (backgroundColor == null)
const Divider(
thickness: 1,
color: MyColors.lightGreyEFColor,
height: 1,
)
],
);
}
@override
Size get preferredSize => const Size.fromHeight(55);
Size get preferredSize => const Size.fromHeight(60);
}

@ -2,7 +2,7 @@
import 'package:flutter/material.dart';
import 'package:mc_common_app/extensions/int_extensions.dart';
import 'package:mc_common_app/extensions/string_extensions.dart';
import 'package:mc_common_app/widgets/show_fill_button.dart';
import 'package:mc_common_app/widgets/button/show_fill_button.dart';
class MessageDialog extends StatelessWidget {
String? title, buttonTitle;

@ -6,7 +6,7 @@ import 'package:mc_common_app/extensions/string_extensions.dart';
import 'package:mc_common_app/generated/locale_keys.g.dart';
import 'package:mc_common_app/theme/colors.dart';
import 'package:mc_common_app/widgets/count_down_timer.dart';
import 'package:mc_common_app/widgets/show_fill_button.dart';
import 'package:mc_common_app/widgets/button/show_fill_button.dart';
import '../otp_widget.dart';

@ -6,7 +6,6 @@ import 'package:mc_common_app/theme/colors.dart';
import 'package:provider/provider.dart';
extension ExtendedText on Widget {
showOverlay({double? width, double? height}) {
return Container(
width: width ?? double.infinity,
@ -24,21 +23,25 @@ extension ExtendedText on Widget {
}
extension ContainerExt on Widget {
Widget toWhiteContainer({required double width, required double allPading}) {
return Container(
decoration: const BoxDecoration(
color: MyColors.white,
boxShadow: [
BoxShadow(
blurRadius: 8,
spreadRadius: 3,
offset: Offset(0, 3),
color: MyColors.greyShadowColor,
),
],
Widget toWhiteContainer({required double width, required double allPading, EdgeInsets? margin, VoidCallback? onTap}) {
return InkWell(
onTap: onTap,
child: Container(
decoration: const BoxDecoration(
color: MyColors.white,
boxShadow: [
BoxShadow(
blurRadius: 8,
spreadRadius: 3,
offset: Offset(0, 3),
color: MyColors.greyShadowColor,
),
],
),
padding: EdgeInsets.all(allPading),
margin: margin,
child: this,
),
padding: EdgeInsets.all(allPading),
child: this,
);
}
@ -50,31 +53,39 @@ extension ContainerExt on Widget {
// );
// }
Widget toContainer({double borderRadius = 8,
Widget toContainer({
double borderRadius = 8,
double paddingAll = 10,
double marginAll = 0,
EdgeInsetsGeometry? margin,
EdgeInsetsGeometry? padding,
Color backgroundColor = Colors.white,
bool isShadowEnabled = false,
double? width}) =>
bool isEnabledBorder = false,
Color borderColor = Colors.black,
double borderWidget = 1,
double? width,
double? height,
}) =>
Container(
decoration: BoxDecoration(
color: backgroundColor,
borderRadius: BorderRadius.circular(borderRadius),
border: !isEnabledBorder ? null : Border.all(color: borderColor, width: borderWidget),
boxShadow: !isShadowEnabled
? null
: [
BoxShadow(
color: const Color(0xff000000).withOpacity(.05),
blurRadius: 26,
offset: const Offset(0, -3),
),
],
BoxShadow(
color: const Color(0xff000000).withOpacity(.05),
blurRadius: 26,
offset: const Offset(0, -3),
),
],
),
padding: padding ?? EdgeInsets.all(paddingAll),
margin: margin ?? EdgeInsets.all(marginAll),
width: width,
height: height,
child: this,
);
}
@ -214,7 +225,6 @@ extension WidgetExt on Widget {
);
}
Widget paddingOnly({double left = 0.0, double right = 0.0, double top = 0.0, double bottom = 0.0}) =>
Padding(padding: EdgeInsets.only(left: left, right: right, top: top, bottom: bottom), child: this);
@ -342,5 +352,4 @@ extension LocaleSetup on MultiProvider {
extension WidgetExtensions on Widget {
Widget onPress(VoidCallback onTap) => InkWell(onTap: onTap, child: this);
}

@ -0,0 +1,64 @@
import 'package:flutter/material.dart';
import 'package:mc_common_app/extensions/int_extensions.dart';
import 'package:mc_common_app/theme/colors.dart';
import 'package:mc_common_app/widgets/dropdown/dropdow_field.dart';
class MenuTabs extends StatefulWidget {
int selectedIndex;
List<DropValue> dropList;
Function(DropValue value) onSelect;
Color? selectedColor;
MenuTabs(this.selectedIndex, this.dropList, {required this.onSelect, this.selectedColor});
@override
State<MenuTabs> createState() => _RoleTypeTabState();
}
class _RoleTypeTabState extends State<MenuTabs> {
@override
Widget build(BuildContext context) {
return SizedBox(
width: double.infinity,
height: 35,
child: ListView.separated(
itemBuilder: (context, index) {
return InkWell(
onTap: () {
setState(() {
widget.selectedIndex = index;
widget.onSelect(widget.dropList[index]);
});
},
child: Container(
height: 45,
decoration: BoxDecoration(
color: widget.selectedIndex == index ? widget.selectedColor ?? MyColors.darkIconColor : Colors.white,
border: Border.all(color: widget.selectedIndex == index ? widget.selectedColor ?? MyColors.darkIconColor : MyColors.darkPrimaryColor, width: 1.5),
borderRadius: const BorderRadius.all(Radius.circular(0)),
),
padding: const EdgeInsets.symmetric(horizontal: 20),
child: Center(
child: Text(
widget.dropList[index].value,
style: TextStyle(
color: widget.selectedIndex == index ? MyColors.white : Colors.black,
fontSize: 12,
fontWeight: FontWeight.w600,
),
),
),
),
);
},
separatorBuilder: (context, index) {
return 12.width;
},
padding: const EdgeInsets.symmetric(horizontal: 21),
itemCount: widget.dropList.length,
scrollDirection: Axis.horizontal,
),
);
}
}
Loading…
Cancel
Save