Sultan Merge

development_aamir
Aamir Muhammad 2 years ago
parent 2f22519d86
commit 28d977017e

@ -194,7 +194,6 @@ class AppState {
bool cancelRequestTrancsection = true; bool cancelRequestTrancsection = true;
String _iosVoipPlayerID = ""; String _iosVoipPlayerID = "";
String get iosVoipPlayerID => _iosVoipPlayerID; String get iosVoipPlayerID => _iosVoipPlayerID;

@ -1,3 +1,5 @@
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

@ -10,6 +10,7 @@ import 'package:audio_session/audio_session_web.dart';
import 'package:file_picker/_internal/file_picker_web.dart'; import 'package:file_picker/_internal/file_picker_web.dart';
import 'package:firebase_core_web/firebase_core_web.dart'; import 'package:firebase_core_web/firebase_core_web.dart';
import 'package:firebase_messaging_web/firebase_messaging_web.dart'; import 'package:firebase_messaging_web/firebase_messaging_web.dart';
import 'package:flutter_web_plugins/flutter_web_plugins.dart';
import 'package:fluttertoast/fluttertoast_web.dart'; import 'package:fluttertoast/fluttertoast_web.dart';
import 'package:geolocator_web/geolocator_web.dart'; import 'package:geolocator_web/geolocator_web.dart';
import 'package:image_picker_for_web/image_picker_for_web.dart'; import 'package:image_picker_for_web/image_picker_for_web.dart';
@ -18,8 +19,6 @@ import 'package:shared_preferences_web/shared_preferences_web.dart';
import 'package:url_launcher_web/url_launcher_web.dart'; import 'package:url_launcher_web/url_launcher_web.dart';
import 'package:video_player_web/video_player_web.dart'; import 'package:video_player_web/video_player_web.dart';
import 'package:flutter_web_plugins/flutter_web_plugins.dart';
// ignore: public_member_api_docs // ignore: public_member_api_docs
void registerPlugins(Registrar registrar) { void registerPlugins(Registrar registrar) {
AudioSessionWeb.registerWith(registrar); AudioSessionWeb.registerWith(registrar);

@ -20,13 +20,13 @@ import 'package:provider/provider.dart';
import 'package:provider/single_child_widget.dart'; import 'package:provider/single_child_widget.dart';
import 'package:signalr_netcore/hub_connection.dart'; import 'package:signalr_netcore/hub_connection.dart';
import 'package:sizer/sizer.dart'; import 'package:sizer/sizer.dart';
late HubConnection chatHubConnection; late HubConnection chatHubConnection;
// test uat account // test uat account
// username 199067 // username 199067
// pass h123456 // pass h123456
late HubConnection chatHubConnection;
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(
@ -122,7 +122,6 @@ class MyApp extends StatelessWidget {
}, },
theme: AppTheme.getTheme( theme: AppTheme.getTheme(
EasyLocalization.of(context)?.locale.languageCode == "ar", EasyLocalization.of(context)?.locale.languageCode == "ar",
), ),
debugShowCheckedModeBanner: false, debugShowCheckedModeBanner: false,
localizationsDelegates: delegates, localizationsDelegates: delegates,

@ -110,7 +110,6 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin {
); );
disableChatForThisUser = false; disableChatForThisUser = false;
isUserOnline = false; isUserOnline = false;
if (Platform.isIOS) { if (Platform.isIOS) {
AppState().setisUserOnline = false; AppState().setisUserOnline = false;
@ -163,14 +162,10 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin {
chatHubConnection.on("OnUserTypingAsync", onUserTyping); chatHubConnection.on("OnUserTypingAsync", onUserTyping);
chatHubConnection.on("OnUserCountAsync", userCountAsync); chatHubConnection.on("OnUserCountAsync", userCountAsync);
// chatHubConnection.on("OnUpdateUserChatHistoryWindowsAsync", updateChatHistoryWindow); // chatHubConnection.on("OnUpdateUserChatHistoryWindowsAsync", updateChatHistoryWindow);
chatHubConnection.on( chatHubConnection.on("OnGetUserChatHistoryNotDeliveredAsync", chatNotDelivered);
"OnGetUserChatHistoryNotDeliveredAsync", chatNotDelivered); chatHubConnection.on("OnUpdateUserChatHistoryStatusAsync", updateUserChatStatus);
chatHubConnection.on( chatHubConnection.on("OnGetGroupUserStatusAsync", getGroupUserStatus);
"OnUpdateUserChatHistoryStatusAsync", updateUserChatStatus); chatHubConnection.on("OnAddGroupChatHistoryAsync", groupChatHistoryAsync);
chatHubConnection.on(
"OnGetGroupUserStatusAsync", getGroupUserStatus);
chatHubConnection.on(
"OnAddGroupChatHistoryAsync", groupChatHistoryAsync);
// //
// {"type":1,"target":"","arguments":[[{"id":217869,"userName":"Sultan.Khan","email":"Sultan.Khan@cloudsolutions.com.sa","phone":null,"title":"Sultan.Khan","userStatus":1,"image":null,"unreadMessageCount":0,"userAction":3,"isPin":false,"isFav":false,"isAdmin":false,"rKey":null,"totalCount":0,"isHuaweiDevice":false,"deviceToken":null},{"id":15153,"userName":"Tamer.Fanasheh","email":"Tamer.F@cloudsolutions.com.sa","phone":null,"title":"Tamer Fanasheh","userStatus":2,"image":null,"unreadMessageCount":0,"userAction":3,"isPin":false,"isFav":false,"isAdmin":true,"rKey":null,"totalCount":0,"isHuaweiDevice":false,"deviceToken":null}]]} // {"type":1,"target":"","arguments":[[{"id":217869,"userName":"Sultan.Khan","email":"Sultan.Khan@cloudsolutions.com.sa","phone":null,"title":"Sultan.Khan","userStatus":1,"image":null,"unreadMessageCount":0,"userAction":3,"isPin":false,"isFav":false,"isAdmin":false,"rKey":null,"totalCount":0,"isHuaweiDevice":false,"deviceToken":null},{"id":15153,"userName":"Tamer.Fanasheh","email":"Tamer.F@cloudsolutions.com.sa","phone":null,"title":"Tamer Fanasheh","userStatus":2,"image":null,"unreadMessageCount":0,"userAction":3,"isPin":false,"isFav":false,"isAdmin":true,"rKey":null,"totalCount":0,"isHuaweiDevice":false,"deviceToken":null}]]}
@ -324,12 +319,13 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin {
notifyListeners(); notifyListeners();
} }
void getGroupUserStatus(List<Object?>? args){ void getGroupUserStatus(List<Object?>? args) {
//note: need to implement this function when group user status //note: need to implement this function when group user status
print(args); print(args);
} }
void groupChatHistoryAsync(List<Object?>? args){
void groupChatHistoryAsync(List<Object?>? args) {
//need to imlement this event when any group details updated. //need to imlement this event when any group details updated.
print(args); print(args);
} }
@ -430,21 +426,13 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin {
data.first.currentUserName = temp.first.targetUserName; data.first.currentUserName = temp.first.targetUserName;
data.first.currentUserEmail = temp.first.targetUserEmail; data.first.currentUserEmail = temp.first.targetUserEmail;
if (data.first.fileTypeId == 12 || data.first.fileTypeId == 4 || data.first.fileTypeId == 3) { if (data.first.fileTypeId == 12 || data.first.fileTypeId == 4 || data.first.fileTypeId == 3) {
data.first.image = await ChatApiClient().downloadURL(fileName: data.first.contant!, fileTypeDescription: data.first.fileTypeResponse!.fileTypeDescription ?? "image/jpg",fileSource: 1); data.first.image = await ChatApiClient().downloadURL(fileName: data.first.contant!, fileTypeDescription: data.first.fileTypeResponse!.fileTypeDescription ?? "image/jpg", fileSource: 1);
} }
if (data.first.userChatReplyResponse != null) { if (data.first.userChatReplyResponse != null) {
if (data.first.fileTypeResponse != null) { if (data.first.fileTypeResponse != null) {
if (data.first.userChatReplyResponse!.fileTypeId == 12 || if (data.first.userChatReplyResponse!.fileTypeId == 12 || data.first.userChatReplyResponse!.fileTypeId == 4 || data.first.userChatReplyResponse!.fileTypeId == 3) {
data.first.userChatReplyResponse!.fileTypeId == 4 ||
data.first.userChatReplyResponse!.fileTypeId == 3) {
data.first.userChatReplyResponse!.image = await ChatApiClient() data.first.userChatReplyResponse!.image = await ChatApiClient()
.downloadURL( .downloadURL(fileName: data.first.userChatReplyResponse!.contant!, fileTypeDescription: data.first.fileTypeResponse!.fileTypeDescription ?? "image/jpg", fileSource: 1);
fileName: data.first.userChatReplyResponse!.contant!,
fileTypeDescription:
data.first.fileTypeResponse!.fileTypeDescription ??
"image/jpg",
fileSource:1
);
data.first.userChatReplyResponse!.isImageLoaded = true; data.first.userChatReplyResponse!.isImageLoaded = true;
} }
} }
@ -516,30 +504,14 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin {
// data.first.currentUserId = temp.first.currentUserId; // data.first.currentUserId = temp.first.currentUserId;
// data.first.currentUserName = temp.first.currentUserName; // data.first.currentUserName = temp.first.currentUserName;
if (data.first.fileTypeId == 12 || data.first.fileTypeId == 4 || data.first.fileTypeId == 3) {
if (data.first.fileTypeId == 12 || data.first.image = await ChatApiClient().downloadURL(fileName: data.first.contant!, fileTypeDescription: data.first.fileTypeResponse!.fileTypeDescription ?? "image/jpg", fileSource: 2);
data.first.fileTypeId == 4 ||
data.first.fileTypeId == 3) {
data.first.image = await ChatApiClient().downloadURL(
fileName: data.first.contant!,
fileTypeDescription:
data.first.fileTypeResponse!.fileTypeDescription ??
"image/jpg",
fileSource:2
);
} }
if (data.first.groupChatReplyResponse != null) { if (data.first.groupChatReplyResponse != null) {
if (data.first.fileTypeResponse != null) { if (data.first.fileTypeResponse != null) {
if (data.first.groupChatReplyResponse!.fileTypeId == 12 || if (data.first.groupChatReplyResponse!.fileTypeId == 12 || data.first.groupChatReplyResponse!.fileTypeId == 4 || data.first.groupChatReplyResponse!.fileTypeId == 3) {
data.first.groupChatReplyResponse!.fileTypeId == 4 ||
data.first.groupChatReplyResponse!.fileTypeId == 3) {
data.first.groupChatReplyResponse!.image = await ChatApiClient() data.first.groupChatReplyResponse!.image = await ChatApiClient()
.downloadURL( .downloadURL(fileName: data.first.groupChatReplyResponse!.contant!, fileTypeDescription: data.first.fileTypeResponse!.fileTypeDescription ?? "image/jpg", fileSource: 2);
fileName: data.first.groupChatReplyResponse!.contant!,
fileTypeDescription:
data.first.fileTypeResponse!.fileTypeDescription ??
"image/jpg",
fileSource:2);
data.first.groupChatReplyResponse!.isImageLoaded = true; data.first.groupChatReplyResponse!.isImageLoaded = true;
} }
} }
@ -932,8 +904,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin {
else if (!isTextMsg && isAttachmentMsg && !isVoiceMsg && !isReplyMsg) { else if (!isTextMsg && isAttachmentMsg && !isVoiceMsg && !isReplyMsg) {
logger.d("// Normal Image Message"); logger.d("// Normal Image Message");
Utils.showLoading(context); Utils.showLoading(context);
dynamic value = await uploadAttachments( dynamic value = await uploadAttachments(AppState().chatDetails!.response!.id.toString(), selectedFile, '2');
AppState().chatDetails!.response!.id.toString(), selectedFile,'2');
String? ext = getFileExtension(selectedFile.path); String? ext = getFileExtension(selectedFile.path);
Utils.hideLoading(context); Utils.hideLoading(context);
sendGroupChatToServer( sendGroupChatToServer(
@ -953,8 +924,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin {
} else if (!isTextMsg && isAttachmentMsg && !isVoiceMsg && isReplyMsg) { } else if (!isTextMsg && isAttachmentMsg && !isVoiceMsg && isReplyMsg) {
logger.d("// Image as Reply Msg"); logger.d("// Image as Reply Msg");
Utils.showLoading(context); Utils.showLoading(context);
dynamic value = await uploadAttachments( dynamic value = await uploadAttachments(AppState().chatDetails!.response!.id.toString(), selectedFile, '2');
AppState().chatDetails!.response!.id.toString(), selectedFile,'2');
String? ext = getFileExtension(selectedFile.path); String? ext = getFileExtension(selectedFile.path);
Utils.hideLoading(context); Utils.hideLoading(context);
sendGroupChatToServer( sendGroupChatToServer(
@ -990,8 +960,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin {
isPlaying = false; isPlaying = false;
isRecoding = false; isRecoding = false;
Utils.showLoading(context); Utils.showLoading(context);
dynamic value = await uploadAttachments( dynamic value = await uploadAttachments(AppState().chatDetails!.response!.id.toString(), voiceFile, '2');
AppState().chatDetails!.response!.id.toString(), voiceFile,'2');
String? ext = getFileExtension(voiceFile.path); String? ext = getFileExtension(voiceFile.path);
Utils.hideLoading(context); Utils.hideLoading(context);
sendGroupChatToServer( sendGroupChatToServer(
@ -1027,8 +996,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin {
isRecoding = false; isRecoding = false;
Utils.showLoading(context); Utils.showLoading(context);
dynamic value = await uploadAttachments( dynamic value = await uploadAttachments(AppState().chatDetails!.response!.id.toString(), voiceFile, '2');
AppState().chatDetails!.response!.id.toString(), voiceFile,'2');
String? ext = getFileExtension(voiceFile.path); String? ext = getFileExtension(voiceFile.path);
Utils.hideLoading(context); Utils.hideLoading(context);
sendGroupChatToServer( sendGroupChatToServer(
@ -1130,8 +1098,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin {
else if (!isTextMsg && isAttachmentMsg && !isVoiceMsg && !isReplyMsg) { else if (!isTextMsg && isAttachmentMsg && !isVoiceMsg && !isReplyMsg) {
logger.d("// Normal Image Message"); logger.d("// Normal Image Message");
Utils.showLoading(context); Utils.showLoading(context);
dynamic value = await uploadAttachments( dynamic value = await uploadAttachments(AppState().chatDetails!.response!.id.toString(), selectedFile, '1');
AppState().chatDetails!.response!.id.toString(), selectedFile,'1');
String? ext = getFileExtension(selectedFile.path); String? ext = getFileExtension(selectedFile.path);
Utils.hideLoading(context); Utils.hideLoading(context);
sendChatToServer( sendChatToServer(
@ -1150,8 +1117,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin {
} else if (!isTextMsg && isAttachmentMsg && !isVoiceMsg && isReplyMsg) { } else if (!isTextMsg && isAttachmentMsg && !isVoiceMsg && isReplyMsg) {
logger.d("// Image as Reply Msg"); logger.d("// Image as Reply Msg");
Utils.showLoading(context); Utils.showLoading(context);
dynamic value = await uploadAttachments( dynamic value = await uploadAttachments(AppState().chatDetails!.response!.id.toString(), selectedFile, '1');
AppState().chatDetails!.response!.id.toString(), selectedFile,'1');
String? ext = getFileExtension(selectedFile.path); String? ext = getFileExtension(selectedFile.path);
Utils.hideLoading(context); Utils.hideLoading(context);
sendChatToServer( sendChatToServer(
@ -1186,8 +1152,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin {
isPlaying = false; isPlaying = false;
isRecoding = false; isRecoding = false;
Utils.showLoading(context); Utils.showLoading(context);
dynamic value = await uploadAttachments( dynamic value = await uploadAttachments(AppState().chatDetails!.response!.id.toString(), voiceFile, '1');
AppState().chatDetails!.response!.id.toString(), voiceFile, '1');
String? ext = getFileExtension(voiceFile.path); String? ext = getFileExtension(voiceFile.path);
Utils.hideLoading(context); Utils.hideLoading(context);
sendChatToServer( sendChatToServer(
@ -1221,8 +1186,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin {
isRecoding = false; isRecoding = false;
Utils.showLoading(context); Utils.showLoading(context);
dynamic value = await uploadAttachments( dynamic value = await uploadAttachments(AppState().chatDetails!.response!.id.toString(), voiceFile, '1');
AppState().chatDetails!.response!.id.toString(), voiceFile, '1');
String? ext = getFileExtension(voiceFile.path); String? ext = getFileExtension(voiceFile.path);
Utils.hideLoading(context); Utils.hideLoading(context);
sendChatToServer( sendChatToServer(
@ -1618,23 +1582,10 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin {
} }
} }
Future<void> getChatMedia(BuildContext context, Future<void> getChatMedia(BuildContext context, {required String fileName, required String fileTypeName, required int fileTypeID, required int fileSource}) async {
{required String fileName,
required String fileTypeName,
required int fileTypeID,
required int fileSource}) async {
Utils.showLoading(context); Utils.showLoading(context);
if (fileTypeID == 1 || if (fileTypeID == 1 || fileTypeID == 5 || fileTypeID == 7 || fileTypeID == 6 || fileTypeID == 8 || fileTypeID == 2 || fileTypeID == 16) {
fileTypeID == 5 || Uint8List encodedString = await ChatApiClient().downloadURL(fileName: fileName, fileTypeDescription: getFileTypeDescription(fileTypeName), fileSource: fileSource);
fileTypeID == 7 ||
fileTypeID == 6 ||
fileTypeID == 8 ||
fileTypeID == 2 || fileTypeID ==16) {
Uint8List encodedString = await ChatApiClient().downloadURL(
fileName: fileName,
fileTypeDescription: getFileTypeDescription(fileTypeName),
fileSource: fileSource
);
try { try {
String path = await downChatMedia(encodedString, fileTypeName ?? ""); String path = await downChatMedia(encodedString, fileTypeName ?? "");
Utils.hideLoading(context); Utils.hideLoading(context);

@ -152,11 +152,13 @@ class _GroupChatDetailScreenState extends State<GroupChatDetailScreen> {
m.groupChatHistory[i].fileTypeId! == 5 || m.groupChatHistory[i].fileTypeId! == 5 ||
m.groupChatHistory[i].fileTypeId! == 7 || m.groupChatHistory[i].fileTypeId! == 7 ||
m.groupChatHistory[i].fileTypeId! == 6 || m.groupChatHistory[i].fileTypeId! == 6 ||
m.groupChatHistory[i].fileTypeId! == 8 m.groupChatHistory[i].fileTypeId! == 8 ||
|| m.groupChatHistory[i].fileTypeId! == 16 m.groupChatHistory[i].fileTypeId! == 16) {
) {
m.getChatMedia(context, m.getChatMedia(context,
fileTypeName: m.groupChatHistory[i].fileTypeResponse!.fileTypeName ?? "", fileTypeID: m.groupChatHistory[i].fileTypeId!, fileName: m.groupChatHistory[i].contant!,fileSource: 2); fileTypeName: m.groupChatHistory[i].fileTypeResponse!.fileTypeName ?? "",
fileTypeID: m.groupChatHistory[i].fileTypeId!,
fileName: m.groupChatHistory[i].contant!,
fileSource: 2);
} }
} }
}); });
@ -247,8 +249,7 @@ 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),
], ],
@ -302,9 +303,7 @@ 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(
@ -315,13 +314,12 @@ 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),
], ],

@ -18,7 +18,6 @@ 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/main.dart'; import 'package:mohem_flutter_app/main.dart';
import 'package:mohem_flutter_app/models/chat/incoming_call_model.dart';
import 'package:mohem_flutter_app/models/itg/itg_main_response.dart'; import 'package:mohem_flutter_app/models/itg/itg_main_response.dart';
import 'package:mohem_flutter_app/models/itg/itg_response_model.dart'; import 'package:mohem_flutter_app/models/itg/itg_response_model.dart';
import 'package:mohem_flutter_app/models/offers_and_discounts/get_offers_list.dart'; import 'package:mohem_flutter_app/models/offers_and_discounts/get_offers_list.dart';
@ -39,7 +38,6 @@ import 'package:mohem_flutter_app/widgets/shimmer/offers_shimmer_widget.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:pull_to_refresh/pull_to_refresh.dart'; import 'package:pull_to_refresh/pull_to_refresh.dart';
import 'package:signalr_netcore/signalr_client.dart'; import 'package:signalr_netcore/signalr_client.dart';
import 'package:http/http.dart' as http;
class DashboardScreen extends StatefulWidget { class DashboardScreen extends StatefulWidget {
DashboardScreen({Key? key}) : super(key: key); DashboardScreen({Key? key}) : super(key: key);

@ -16,7 +16,6 @@ import 'package:flutter_ios_voip_kit/call_state_type.dart';
import 'package:flutter_ios_voip_kit/flutter_ios_voip_kit.dart'; import 'package:flutter_ios_voip_kit/flutter_ios_voip_kit.dart';
import 'package:logger/logger.dart'; import 'package:logger/logger.dart';
import 'package:mohem_flutter_app/api/chat/chat_api_client.dart'; import 'package:mohem_flutter_app/api/chat/chat_api_client.dart';
// import 'package:huawei_hmsavailability/huawei_hmsavailability.dart'; // import 'package:huawei_hmsavailability/huawei_hmsavailability.dart';
import 'package:mohem_flutter_app/api/login_api_client.dart'; import 'package:mohem_flutter_app/api/login_api_client.dart';
import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/app_state/app_state.dart';

@ -96,7 +96,8 @@ class _DynamicInputScreenState extends State<DynamicInputScreen> {
SubmitEITTransactionList submitEITTransactionList = await MyAttendanceApiClient().submitEitTransaction(dESCFLEXCONTEXTCODE, dynamicParams!.dynamicId, values, empID: dynamicParams!.selectedEmp); SubmitEITTransactionList submitEITTransactionList = await MyAttendanceApiClient().submitEitTransaction(dESCFLEXCONTEXTCODE, dynamicParams!.dynamicId, values, empID: dynamicParams!.selectedEmp);
Utils.hideLoading(context); Utils.hideLoading(context);
await Navigator.pushNamed(context, AppRoutes.requestSubmitScreen, await Navigator.pushNamed(context, AppRoutes.requestSubmitScreen,
arguments: RequestSubmitScreenParams(LocaleKeys.submit.tr(), submitEITTransactionList.pTRANSACTIONID!, submitEITTransactionList.pITEMKEY!, 'eit',isAttachmentMandatory: dynamicParams!.isAttachmentMandatory)); arguments: RequestSubmitScreenParams(LocaleKeys.submit.tr(), submitEITTransactionList.pTRANSACTIONID!, submitEITTransactionList.pITEMKEY!, 'eit',
isAttachmentMandatory: dynamicParams!.isAttachmentMandatory));
if (!AppState().cancelRequestTrancsection) { if (!AppState().cancelRequestTrancsection) {
return; return;
} }

@ -1,8 +1,6 @@
import 'dart:io'; import 'dart:io';
import 'dart:typed_data';
import 'dart:ui' as ui; import 'dart:ui' as ui;
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart'; import 'package:flutter/rendering.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
@ -77,7 +75,7 @@ class _OffersAndDiscountsDetailsState extends State<OffersAndDiscountsDetails> {
: getOffersList[0].titleEn!.toText22(isBold: true, color: const Color(0xff2B353E)).center, : getOffersList[0].titleEn!.toText22(isBold: true, color: const Color(0xff2B353E)).center,
Html( Html(
data: AppState().isArabic(context) ? getOffersList[0].descriptionAr! : getOffersList[0].descriptionEn ?? "", data: AppState().isArabic(context) ? getOffersList[0].descriptionAr! : getOffersList[0].descriptionEn ?? "",
onLinkTap: (String? url, RenderContext context, Map<String, String> attributes, _) { onLinkTap: (String? url, Map<String, String> attributes, _) {
launchUrl(Uri.parse(url!)); launchUrl(Uri.parse(url!));
}, },
), ),

@ -12,17 +12,15 @@ import 'package:mohem_flutter_app/widgets/dialogs/confirm_dialog.dart';
import 'package:permission_handler/permission_handler.dart'; import 'package:permission_handler/permission_handler.dart';
final ImagePicker picker = ImagePicker(); final ImagePicker picker = ImagePicker();
class ImageOptions {
class ImageOptions {
static void showImageOptionsNew(BuildContext context, bool showFilesOption, Function(String, File) image) { static void showImageOptionsNew(BuildContext context, bool showFilesOption, Function(String, File) image) {
showMyBottomSheet( showMyBottomSheet(
context, context,
callBackFunc: () {}, callBackFunc: () {},
child: AttachmentOptions( child: AttachmentOptions(
showFilesOption: showFilesOption, showFilesOption: showFilesOption,
onCameraTap: () async { onCameraTap: () async {
if (Platform.isAndroid) { if (Platform.isAndroid) {
cameraImageAndroid(image); cameraImageAndroid(image);
} else { } else {
@ -162,7 +160,7 @@ void galleryImageAndroid(Function(String, File) image) async {
} }
void cameraImageAndroid(Function(String, File) image) async { void cameraImageAndroid(Function(String, File) image) async {
File _image = File(( await picker.pickMedia())?.path ?? ""); File _image = File((await picker.pickMedia())?.path ?? "");
String fileName = _image.path; String fileName = _image.path;
var bytes = File(fileName).readAsBytesSync(); var bytes = File(fileName).readAsBytesSync();
String base64Encode = base64.encode(bytes); String base64Encode = base64.encode(bytes);

Loading…
Cancel
Save