Merge branch 'master_mohemm_flutter'

# Conflicts:
#	lib/app_state/app_state.dart
#	lib/ui/app_update_screen.dart
#	lib/ui/chat/group_chat_detaied_screen.dart
#	pubspec.yaml
mohemm_HMG_flutter_upgrade
haroon amjad 2 years ago
commit 2744eff281

@ -540,5 +540,7 @@
"expiredDocuments": "المستندات منتهية الصلاحية", "expiredDocuments": "المستندات منتهية الصلاحية",
"missingDocuments": "مستندات مفقودة", "missingDocuments": "مستندات مفقودة",
"uploadedDocuments": "المستندات التي تم تحميلها", "uploadedDocuments": "المستندات التي تم تحميلها",
"addAtLeastOneAttachment": "الرجاء إضافة مرفق واحد على الأقل." "addAtLeastOneAttachment": "الرجاء إضافة مرفق واحد على الأقل.",
"pleaseClickButtonToJoinMarathon": "الرجاء الضغط على الزر أدناه للانضمام إلى الماراثون",
"youCannotJoinTheMarathon": "لا يمكنك الانضمام إلى الماراثون لأنك تجاوزت الحد الزمني"
} }

@ -539,8 +539,7 @@
"allDocuments": "All\nDocuments", "allDocuments": "All\nDocuments",
"expiredDocuments": "Expired\nDocuments", "expiredDocuments": "Expired\nDocuments",
"missingDocuments": "Missing\nDocuments", "missingDocuments": "Missing\nDocuments",
"uploadedDocuments": "Uploaded\nDocuments" "uploadedDocuments": "Uploaded\nDocuments",
"resetAdPassword": "Reset AD Password"
"manage": "Manage", "manage": "Manage",
"members": "Members", "members": "Members",
"areYouSureWantTodelete": "Are you sure want to delete?", "areYouSureWantTodelete": "Are you sure want to delete?",
@ -560,5 +559,7 @@
"userSearch": "User Search", "userSearch": "User Search",
"userName": "User Name", "userName": "User Name",
"userId": "UserID", "userId": "UserID",
"addAtLeastOneAttachment": "Please add at least one attachment." "addAtLeastOneAttachment": "Please add at least one attachment.",
"pleaseClickButtonToJoinMarathon": "Press the button below to join the Marathon.",
"youCannotJoinTheMarathon": "You cannot join the Marathon because you have exceeded the time limit."
} }

@ -186,6 +186,13 @@ class ApiClient {
} else { } else {
headers['Content-Type'] = 'application/json'; headers['Content-Type'] = 'application/json';
} }
if (!kReleaseMode) {
print("Url:$url");
// var bodyJson = json.encode(jsonObject);
// print("body:$bodyJson");
}
return await _getForResponse(url, token: token, queryParameters: queryParameters, headers: headers, retryTimes: retryTimes); return await _getForResponse(url, token: token, queryParameters: queryParameters, headers: headers, retryTimes: retryTimes);
} }

@ -90,7 +90,7 @@ class AppState {
String get getHuaweiPushToken => _huaweiPushToken; String get getHuaweiPushToken => _huaweiPushToken;
final PostParamsModel _postParamsInitConfig = PostParamsModel(channel: 33, versionID: 5.3, mobileType: Platform.isAndroid ? "android" : "ios"); final PostParamsModel _postParamsInitConfig = PostParamsModel(channel: 31, versionID: 5.3, mobileType: Platform.isAndroid ? "android" : "ios");
void setPostParamsInitConfig() { void setPostParamsInitConfig() {
isAuthenticated = false; isAuthenticated = false;

@ -3,8 +3,8 @@ import 'package:mohem_flutter_app/ui/marathon/widgets/question_card.dart';
class ApiConsts { class ApiConsts {
//static String baseUrl = "http://10.200.204.20:2801/"; // Local server //static String baseUrl = "http://10.200.204.20:2801/"; // Local server
// static String baseUrl = "https://erptstapp.srca.org.sa"; // SRCA server // static String baseUrl = "https://erptstapp.srca.org.sa"; // SRCA server
static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server // static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server
// static String baseUrl = "https://hmgwebservices.com"; // Live server static String baseUrl = "https://hmgwebservices.com"; // Live server
static String baseUrlServices = baseUrl + "/Services/"; // server static String baseUrlServices = baseUrl + "/Services/"; // server
// static String baseUrlServices = "https://api.cssynapses.com/tangheem/"; // Live server // static String baseUrlServices = "https://api.cssynapses.com/tangheem/"; // Live server
static String utilitiesRest = baseUrlServices + "Utilities.svc/REST/"; static String utilitiesRest = baseUrlServices + "Utilities.svc/REST/";

@ -162,8 +162,9 @@ extension EmailValidator on String {
), ),
); );
Widget toText17({Color? color, bool isBold = false}) => Text( Widget toText17({Color? color, bool isBold = false, bool isCentered = false}) => Text(
this, this,
textAlign: isCentered ? TextAlign.center : null,
style: TextStyle(color: color ?? MyColors.darkTextColor, fontSize: 17, letterSpacing: -0.68, fontWeight: isBold ? FontWeight.bold : FontWeight.w600), style: TextStyle(color: color ?? MyColors.darkTextColor, fontSize: 17, letterSpacing: -0.68, fontWeight: isBold ? FontWeight.bold : FontWeight.w600),
); );
@ -196,7 +197,6 @@ extension EmailValidator on String {
style: TextStyle(height: 1, color: color ?? MyColors.darkTextColor, fontSize: 22, letterSpacing: -1.44, fontWeight: isBold ? FontWeight.bold : FontWeight.w600), style: TextStyle(height: 1, color: color ?? MyColors.darkTextColor, fontSize: 22, letterSpacing: -1.44, fontWeight: isBold ? FontWeight.bold : FontWeight.w600),
); );
Widget toText23({Color? color, bool isBold = false, bool isCentered = false}) => Text( Widget toText23({Color? color, bool isBold = false, bool isCentered = false}) => Text(
this, this,
textAlign: isCentered ? TextAlign.center : null, textAlign: isCentered ? TextAlign.center : null,

@ -6,15 +6,15 @@ import 'dart:ui';
import 'package:easy_localization/easy_localization.dart' show AssetLoader; import 'package:easy_localization/easy_localization.dart' show AssetLoader;
class CodegenLoader extends AssetLoader{ class CodegenLoader extends AssetLoader {
const CodegenLoader(); const CodegenLoader();
@override @override
Future<Map<String, dynamic>> load(String fullPath, Locale locale ) { Future<Map<String, dynamic>> load(String fullPath, Locale locale) {
return Future.value(mapLocales[locale.toString()]); return Future.value(mapLocales[locale.toString()]);
} }
static const Map<String,dynamic> ar_SA = { static const Map<String, dynamic> ar_SA = {
"mohemm": "Mohemm", "mohemm": "Mohemm",
"english": "English", "english": "English",
"arabic": "عربي", "arabic": "عربي",
@ -446,11 +446,7 @@ class CodegenLoader extends AssetLoader{
"CorrectAddress": "تصحيح أو تعديل هذا العنوان", "CorrectAddress": "تصحيح أو تعديل هذا العنوان",
"SelectChangeWantToMake": " حدد نوع التغيير الذي تريد القيام به.", "SelectChangeWantToMake": " حدد نوع التغيير الذي تريد القيام به.",
"profile": { "profile": {
"reset_password": { "reset_password": {"label": "Reset Password", "username": "Username", "password": "password"},
"label": "Reset Password",
"username": "Username",
"password": "password"
},
"profileCompletionPer": "استكمال الملف الشخصي", "profileCompletionPer": "استكمال الملف الشخصي",
"completeProfile": "الملف الشخصي الكامل", "completeProfile": "الملف الشخصي الكامل",
"personalInformation": "معلومات شخصية", "personalInformation": "معلومات شخصية",
@ -472,10 +468,7 @@ class CodegenLoader extends AssetLoader{
"gender": { "gender": {
"male": "Hi man ;) ", "male": "Hi man ;) ",
"female": "Hello girl :)", "female": "Hello girl :)",
"with_arg": { "with_arg": {"male": "Hi man ;) {}", "female": "Hello girl :) {}"}
"male": "Hi man ;) {}",
"female": "Hello girl :) {}"
}
}, },
"reset_locale": "إعادة ضبط اللغة", "reset_locale": "إعادة ضبط اللغة",
"chat": "دردشة", "chat": "دردشة",
@ -555,9 +548,11 @@ class CodegenLoader extends AssetLoader{
"allDocuments": "كافة المستندات", "allDocuments": "كافة المستندات",
"expiredDocuments": "المستندات منتهية الصلاحية", "expiredDocuments": "المستندات منتهية الصلاحية",
"missingDocuments": "مستندات مفقودة", "missingDocuments": "مستندات مفقودة",
"uploadedDocuments": "المستندات التي تم تحميلها" "uploadedDocuments": "المستندات التي تم تحميلها",
}; "youCannotJoinTheMarathon": "لا يمكنك الانضمام إلى الماراثون لأنك تجاوزت الحد الزمني",
static const Map<String,dynamic> en_US = { "pleaseClickButtonToJoinMarathon": "الرجاء الضغط على الزر أدناه للانضمام إلى الماراثون",
};
static const Map<String, dynamic> en_US = {
"mohemm": "Mohemm", "mohemm": "Mohemm",
"english": "English", "english": "English",
"arabic": "عربي", "arabic": "عربي",
@ -989,11 +984,7 @@ static const Map<String,dynamic> en_US = {
"CorrectAddress": "Correct or amend this address", "CorrectAddress": "Correct or amend this address",
"SelectChangeWantToMake": "Select the type of change you want to make", "SelectChangeWantToMake": "Select the type of change you want to make",
"profile": { "profile": {
"reset_password": { "reset_password": {"label": "Reset Password", "username": "Username", "password": "password"},
"label": "Reset Password",
"username": "Username",
"password": "password"
},
"profileCompletionPer": "Profile Completion", "profileCompletionPer": "Profile Completion",
"completeProfile": "Complete Profile", "completeProfile": "Complete Profile",
"personalInformation": "Personal Information", "personalInformation": "Personal Information",
@ -1015,10 +1006,7 @@ static const Map<String,dynamic> en_US = {
"gender": { "gender": {
"male": "Hi man ;) ", "male": "Hi man ;) ",
"female": "Hello girl :)", "female": "Hello girl :)",
"with_arg": { "with_arg": {"male": "Hi man ;) {}", "female": "Hello girl :) {}"}
"male": "Hi man ;) {}",
"female": "Hello girl :) {}"
}
}, },
"reset_locale": "Reset Language", "reset_locale": "Reset Language",
"chat": "Chat", "chat": "Chat",
@ -1117,7 +1105,9 @@ static const Map<String,dynamic> en_US = {
"searchByUserName": "Search By Username", "searchByUserName": "Search By Username",
"userSearch": "User Search", "userSearch": "User Search",
"userName": "User Name", "userName": "User Name",
"userId": "UserID" "userId": "UserID",
}; "pleaseClickButtonToJoinMarathon": "Press the button below to join the Marathon.",
static const Map<String, Map<String,dynamic>> mapLocales = {"ar_SA": ar_SA, "en_US": en_US}; "youCannotJoinTheMarathon": "You cannot join the Marathon because you have exceeded the time limit."
};
static const Map<String, Map<String, dynamic>> mapLocales = {"ar_SA": ar_SA, "en_US": en_US};
} }

@ -547,4 +547,6 @@ abstract class LocaleKeys {
static const userName ='userName'; static const userName ='userName';
static const userId ='userId'; static const userId ='userId';
static const addAtLeastOneAttachment ='addAtLeastOneAttachment'; static const addAtLeastOneAttachment ='addAtLeastOneAttachment';
static const pleaseClickButtonToJoinMarathon ='pleaseClickButtonToJoinMarathon';
static const youCannotJoinTheMarathon ='youCannotJoinTheMarathon';
} }

@ -9,7 +9,6 @@ import 'package:mohem_flutter_app/classes/consts.dart';
import 'package:mohem_flutter_app/config/routes.dart'; import 'package:mohem_flutter_app/config/routes.dart';
import 'package:mohem_flutter_app/generated/codegen_loader.g.dart'; import 'package:mohem_flutter_app/generated/codegen_loader.g.dart';
import 'package:mohem_flutter_app/models/post_params_model.dart'; import 'package:mohem_flutter_app/models/post_params_model.dart';
import 'package:mohem_flutter_app/provider/chat_call_provider.dart';
import 'package:mohem_flutter_app/provider/chat_provider_model.dart'; import 'package:mohem_flutter_app/provider/chat_provider_model.dart';
import 'package:mohem_flutter_app/provider/dashboard_provider_model.dart'; import 'package:mohem_flutter_app/provider/dashboard_provider_model.dart';
import 'package:mohem_flutter_app/provider/eit_provider_model.dart'; import 'package:mohem_flutter_app/provider/eit_provider_model.dart';
@ -20,6 +19,11 @@ import 'package:provider/provider.dart';
import 'package:provider/single_child_widget.dart'; import 'package:provider/single_child_widget.dart';
import 'package:sizer/sizer.dart'; import 'package:sizer/sizer.dart';
// test uat account
// username 199067
// pass h123456
Logger logger = Logger( Logger logger = Logger(
// filter: null, // Use the default LogFilter (-> only log in debug mode) // filter: null, // Use the default LogFilter (-> only log in debug mode)
printer: PrettyPrinter( printer: PrettyPrinter(

@ -2,6 +2,7 @@ import 'dart:io';
import 'package:easy_localization/easy_localization.dart'; import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:in_app_update/in_app_update.dart';
import 'package:mohem_flutter_app/extensions/int_extensions.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/string_extensions.dart';
import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; import 'package:mohem_flutter_app/extensions/widget_extensions.dart';
@ -37,10 +38,22 @@ class _UnsafeDeviceScreenState extends State<AppUpdateScreen> {
dynamicParams.toString().toText14(isCenter: true).paddingOnly(left: 20.0, right: 20.0), dynamicParams.toString().toText14(isCenter: true).paddingOnly(left: 20.0, right: 20.0),
21.height, 21.height,
DefaultButton(LocaleKeys.ok.tr(), () async { DefaultButton(LocaleKeys.ok.tr(), () async {
if (Platform.isAndroid || Platform.isIOS) { if (Platform.isAndroid) {
var appId = Platform.isAndroid ? 'com.cloudsolutions.alhabibmohemm' : '1480157255'; // _launchURL("https://play.google.com/store/apps/details?id=com.ejada.hmg");
InAppUpdate.checkForUpdate().then((info) {
print("checkForUpdate!!!");
print(info.toString());
if (info.immediateUpdateAllowed) {
print("Immediate Allowed!!!");
InAppUpdate.performImmediateUpdate().then((value) {}).catchError((e) => print(e.toString()));
}
}).catchError((e) {
print(e.toString());
});
}
if (Platform.isIOS) {
var url = Uri.parse( var url = Uri.parse(
Platform.isAndroid ? "market://details?id=$appId" : "https://apps.apple.com/app/id$appId", "https://apps.apple.com/app/id1468856602",
); );
launchUrl( launchUrl(
url, url,

@ -83,7 +83,8 @@ class _GroupChatDetailScreenState extends State<GroupChatDetailScreen> {
data = Provider.of<ChatProviderModel>(context, listen: false); data = Provider.of<ChatProviderModel>(context, listen: false);
// callPro = Provider.of<ChatCallProvider>(context, listen: false); // callPro = Provider.of<ChatCallProvider>(context, listen: false);
if (params != null) { if (params != null) {
data.getGroupChatHistory(params!.groupChatDetails! data.getGroupChatHistory(
params!.groupChatDetails!
// senderUID: AppState().chatDetails!.response!.id!.toInt(), // senderUID: AppState().chatDetails!.response!.id!.toInt(),
// receiverUID: params!.groupChatHistory!.groupId!, // receiverUID: params!.groupChatHistory!.groupId!,
// loadMore: false, // loadMore: false,
@ -253,7 +254,8 @@ class _GroupChatDetailScreenState extends State<GroupChatDetailScreen> {
userStatus: 0, userStatus: 0,
userEmail: "", userEmail: "",
targetUserName: params!.groupChatDetails!.groupName!, targetUserName: params!.groupChatDetails!.groupName!,
userList: params!.groupChatDetails!.groupUserList!), userList: params!.groupChatDetails!.groupUserList!
),
) )
.paddingOnly(right: 21), .paddingOnly(right: 21),
], ],
@ -307,7 +309,9 @@ class _GroupChatDetailScreenState extends State<GroupChatDetailScreen> {
RotationTransition( RotationTransition(
turns: const AlwaysStoppedAnimation(45 / 360), turns: const AlwaysStoppedAnimation(45 / 360),
child: const Icon(Icons.attach_file_rounded, size: 26, color: MyColors.grey3AColor).onPress( child: const Icon(Icons.attach_file_rounded, size: 26, color: MyColors.grey3AColor).onPress(
() => {m.selectImageToUpload(context)}, () => {
m.selectImageToUpload(context)
},
), ),
).paddingOnly(right: 15), ).paddingOnly(right: 15),
const Icon( const Icon(
@ -318,12 +322,13 @@ class _GroupChatDetailScreenState extends State<GroupChatDetailScreen> {
}), }),
SvgPicture.asset("assets/icons/chat/chat_send_icon.svg", height: 26, width: 26) SvgPicture.asset("assets/icons/chat/chat_send_icon.svg", height: 26, width: 26)
.onPress( .onPress(
() => m.sendGroupChatMessage(context, () =>m.sendGroupChatMessage(context,
targetUserId: params!.groupChatDetails!.groupId!, targetUserId: params!.groupChatDetails!.groupId!,
userStatus: 0, userStatus: 0,
userEmail: "", userEmail: "",
targetUserName: params!.groupChatDetails!.groupName!, targetUserName: params!.groupChatDetails!.groupName!,
userList: params!.groupChatDetails!.groupUserList!), userList: params!.groupChatDetails!.groupUserList!
),
) )
.paddingOnly(right: 21), .paddingOnly(right: 21),
], ],
@ -382,8 +387,8 @@ class _GroupChatDetailScreenState extends State<GroupChatDetailScreen> {
// callPro.stopListeners(); // callPro.stopListeners();
// }); // });
} }
GroupUserList getCurrentUser(int id, GroupResponse groupChatDetails) { GroupUserList getCurrentUser(int id, GroupResponse groupChatDetails) {
return groupChatDetails.groupUserList!.firstWhere((GroupUserList item) => item.id == id); return groupChatDetails.groupUserList!.firstWhere((GroupUserList item) => item.id ==id);
} }
} }

@ -193,7 +193,18 @@ class _LoginScreenState extends State<LoginScreen> {
} catch (ex) { } catch (ex) {
Utils.hideLoading(context); Utils.hideLoading(context);
Utils.handleException(ex, context, (msg) { Utils.handleException(ex, context, (msg) {
Utils.confirmDialog(context, msg); Utils.confirmDialog(
context,
msg,
onTap: () async {
if (msg.toLowerCase().contains("password has expired")) {
Navigator.pop(context);
await Navigator.pushNamed(context, AppRoutes.newPassword, arguments: username.text);
} else {
Navigator.pop(context);
}
},
);
}); });
} }
} }

@ -376,6 +376,7 @@ class MarathonScreen extends StatelessWidget {
), ),
questionCardStatus: provider.questionCardStatus, questionCardStatus: provider.questionCardStatus,
).paddingOnly(top: 12, left: 21, right: 21), ).paddingOnly(top: 12, left: 21, right: 21),
50.height
], ],
).expanded, ).expanded,
provider.questionCardStatus == QuestionCardStatus.winnerFound provider.questionCardStatus == QuestionCardStatus.winnerFound

@ -64,7 +64,7 @@ class MarathonDetailsCard extends StatelessWidget {
marathonDetailModel.sponsors!.first.sponsorPrizes != null marathonDetailModel.sponsors!.first.sponsorPrizes != null
? Row( ? Row(
children: <Widget>[ children: <Widget>[
"${LocaleKeys.prize.tr()} ".toText16(color: MyColors.grey77Color, isBold: true), "${LocaleKeys.prize.tr()} ".toText16(color: MyColors.grey77Color),
Expanded( Expanded(
child: SizedBox( child: SizedBox(
height: 30, height: 30,

@ -1,6 +1,10 @@
// ignore_for_file: always_specify_types
import 'package:easy_localization/easy_localization.dart'; import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:mohem_flutter_app/classes/colors.dart'; import 'package:mohem_flutter_app/classes/colors.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/extensions/widget_extensions.dart';
import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; import 'package:mohem_flutter_app/generated/locale_keys.g.dart';
import 'package:mohem_flutter_app/ui/marathon/marathon_provider.dart'; import 'package:mohem_flutter_app/ui/marathon/marathon_provider.dart';
@ -41,15 +45,29 @@ class MarathonFooter extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return provider.isUpComingMarathon && !provider.canPlayDemo if (provider.isUpComingMarathon && !provider.canPlayDemo) {
? DefaultButton( return Column(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
if (provider.isButtonEnabled && (provider.totalSecondsToWaitForMarathon < 30 && provider.totalSecondsToWaitForMarathon > 0)) ...[
LocaleKeys.pleaseClickButtonToJoinMarathon.tr().toText18(color: MyColors.greenColor, isCentered: true),
20.height,
] else if (!provider.isButtonEnabled && (provider.totalSecondsToWaitForMarathon <= 0)) ...[
LocaleKeys.youCannotJoinTheMarathon.tr().toText18(color: MyColors.redColor, isCentered: true),
20.height,
],
DefaultButton(
LocaleKeys.joinMarathon.tr(), LocaleKeys.joinMarathon.tr(),
provider.isButtonEnabled ? () => provider.onJoinMarathonPressed(context) : null, provider.isButtonEnabled ? () => provider.onJoinMarathonPressed(context) : null,
).insideContainer )
: DefaultButton( ],
).insideContainer;
} else {
return DefaultButton(
LocaleKeys.joinDemoMarathon.tr(), LocaleKeys.joinDemoMarathon.tr(),
() => provider.onJoinDemoMarathonPressed(context), () => provider.onJoinDemoMarathonPressed(context),
color: MyColors.yellowColorII, color: MyColors.yellowColorII,
).insideContainer; ).insideContainer;
} }
}
} }

@ -16,7 +16,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev
# In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion. # In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion.
# Read more about iOS versioning at # Read more about iOS versioning at
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
version: 3.7.0+1 version: 3.2.991+300039
environment: environment:
sdk: ">=2.16.0 <3.0.0" sdk: ">=2.16.0 <3.0.0"
@ -46,7 +46,7 @@ dependencies:
local_auth: ^1.1.9 local_auth: ^1.1.9
fluttertoast: ^8.0.8 fluttertoast: ^8.0.8
syncfusion_flutter_calendar: ^19.4.48 syncfusion_flutter_calendar: ^19.4.48
# flutter_calendar_carousel: ^2.1.0 # flutter_calendar_carousel: ^2.1.0
pie_chart: ^5.1.0 pie_chart: ^5.1.0
shared_preferences: ^2.0.12 shared_preferences: ^2.0.12
firebase_messaging: ^13.0.4 firebase_messaging: ^13.0.4
@ -54,9 +54,9 @@ dependencies:
logger: ^1.1.0 logger: ^1.1.0
flutter_countdown_timer: ^4.1.0 flutter_countdown_timer: ^4.1.0
nfc_manager: ^3.2.0 nfc_manager: ^3.2.0
# uuid: ^3.0.6 # uuid: ^3.0.6
# device_info_plus: ^4.0.0 # device_info_plus: ^4.0.0
# android_id: ^0.1.3+1 # android_id: ^0.1.3+1
platform_device_id: ^1.0.1 platform_device_id: ^1.0.1
image_picker: ^0.8.5+3 image_picker: ^0.8.5+3
file_picker: ^4.6.1 file_picker: ^4.6.1
@ -66,21 +66,21 @@ dependencies:
open_file: ^3.2.1 open_file: ^3.2.1
wifi_iot: ^0.3.18 wifi_iot: ^0.3.18
flutter_html: ^3.0.0-alpha.6 flutter_html: ^3.0.0-alpha.6
# flutter_barcode_scanner: ^2.0.0 # flutter_barcode_scanner: ^2.0.0
qr_code_scanner: ^1.0.1 qr_code_scanner: ^1.0.1
# qr_flutter: ^4.0.0 # qr_flutter: ^4.0.0
url_launcher: ^6.0.15 url_launcher: ^6.0.15
share: 2.0.4 share: 2.0.4
flutter_rating_bar: ^4.0.1 flutter_rating_bar: ^4.0.1
auto_size_text: ^3.0.0 auto_size_text: ^3.0.0
pull_to_refresh: ^2.0.0 pull_to_refresh: ^2.0.0
# lottie json animations # lottie json animations
lottie: any lottie: any
# Marathon Card Swipe # Marathon Card Swipe
appinio_swiper: ^1.1.1 appinio_swiper: ^1.1.1
expandable: ^5.0.1 expandable: ^5.0.1
# networkImage # networkImage
cached_network_image: ^3.2.2 cached_network_image: ^3.2.2
#Chat #Chat
@ -101,7 +101,7 @@ dependencies:
video_player: ^2.5.1 video_player: ^2.5.1
just_audio: ^0.9.30 just_audio: ^0.9.30
# safe_device: ^1.1.2 # safe_device: ^1.1.2
flutter_layout_grid: ^2.0.1 flutter_layout_grid: ^2.0.1
#Huawei Dependencies #Huawei Dependencies
@ -115,9 +115,11 @@ dependencies:
carousel_slider: ^4.2.1 carousel_slider: ^4.2.1
#Huawei Specified #Huawei Specified
# store_checker: ^1.1.0 # store_checker: ^1.1.0
google_api_availability: ^3.0.1 google_api_availability: ^3.0.1
in_app_update: 3.0.0
#todo its for temporary purpose, later will remove this. #todo its for temporary purpose, later will remove this.
dotted_border: ^2.0.0+3 dotted_border: ^2.0.0+3

Loading…
Cancel
Save