swipe improvements.

main_design2.1
Sikander Saleem 11 months ago
parent 97fefd8423
commit 96b0a2d36b

@ -67,7 +67,7 @@ class FirebaseNotificationManger {
} catch (ex) {} } catch (ex) {}
} }
} }
print("pushToken:$token"); // print("pushToken:$token");
// return token; // return token;
} }

@ -5,11 +5,11 @@ import 'package:flutter/material.dart';
import 'package:http/http.dart'; import 'package:http/http.dart';
import 'package:test_sa/controllers/api_routes/api_manager.dart'; import 'package:test_sa/controllers/api_routes/api_manager.dart';
import 'package:test_sa/controllers/api_routes/urls.dart'; import 'package:test_sa/controllers/api_routes/urls.dart';
import 'package:test_sa/models/user.dart';
import 'package:test_sa/new_views/forget_password_module/models/general_response_model.dart'; import 'package:test_sa/new_views/forget_password_module/models/general_response_model.dart';
import 'package:test_sa/new_views/swipe_module/models/swipe_model.dart';
import 'package:test_sa/new_views/forget_password_module/models/update_password.dart'; import 'package:test_sa/new_views/forget_password_module/models/update_password.dart';
import 'package:test_sa/new_views/forget_password_module/models/verify_otp_model.dart'; import 'package:test_sa/new_views/forget_password_module/models/verify_otp_model.dart';
import 'package:test_sa/models/user.dart'; import 'package:test_sa/new_views/swipe_module/models/swipe_model.dart';
import 'package:test_sa/new_views/swipe_module/models/swipe_transaction_history.dart'; import 'package:test_sa/new_views/swipe_module/models/swipe_transaction_history.dart';
import 'package:test_sa/new_views/swipe_module/models/swipe_transaction_model.dart'; import 'package:test_sa/new_views/swipe_module/models/swipe_transaction_model.dart';
@ -30,16 +30,6 @@ class UserProvider extends ChangeNotifier {
User _user; User _user;
User get user => _user; User get user => _user;
String _newPassword;
String get newPassword => _newPassword;
set newPassword(String value) {
_newPassword = value;
notifyListeners();
}
String _confirmPassword;
File profileImage; File profileImage;
@ -193,7 +183,7 @@ class UserProvider extends ChangeNotifier {
notifyListeners(); notifyListeners();
Response response; Response response;
try { try {
response = await ApiManager.instance.post(URLs.swipeUrl, body: model.toJson(),showToast: false); response = await ApiManager.instance.post(URLs.swipeUrl, body: model.toJson(), showToast: false);
swipeResponse = SwipeModel.fromJson(json.decode(response.body)); swipeResponse = SwipeModel.fromJson(json.decode(response.body));
if (response.statusCode >= 200 && response.statusCode < 300) { if (response.statusCode >= 200 && response.statusCode < 300) {
isUserConfirmSwipe = true; isUserConfirmSwipe = true;
@ -240,18 +230,17 @@ class UserProvider extends ChangeNotifier {
"dateTo": dateTo.toIso8601String(), "dateTo": dateTo.toIso8601String(),
}; };
try { try {
response = await ApiManager.instance.post(URLs.getSwipeTransactionHistoryUrl, body: body); response = await ApiManager.instance.post(URLs.getSwipeTransactionHistoryUrl, body: body);
if (response.statusCode >= 200 && response.statusCode < 300) {
List dataList = GeneralResponseModel.fromJson(json.decode(response.body)).data;
swipeHistory = List.generate(dataList.length, (index) => SwipeHistory.fromJson(dataList[index]));
} if (response.statusCode >= 200 && response.statusCode < 300) {
isLoading =false ; List dataList = GeneralResponseModel.fromJson(json.decode(response.body)).data;
notifyListeners(); swipeHistory = List.generate(dataList.length, (index) => SwipeHistory.fromJson(dataList[index]));
return response.statusCode; }
isLoading = false;
notifyListeners();
return response.statusCode;
} catch (error) { } catch (error) {
isLoading =false ; isLoading = false;
notifyListeners(); notifyListeners();
return -1; return -1;
} }
@ -353,13 +342,6 @@ class UserProvider extends ChangeNotifier {
} }
} }
String get confirmPassword => _confirmPassword;
set confirmPassword(String value) {
_confirmPassword = value;
notifyListeners();
}
// Future<int> updateProfile({ // Future<int> updateProfile({
// @required String host, // @required String host,
// @required User user, // @required User user,

@ -43,7 +43,7 @@ class AppDrawer extends StatelessWidget {
child: ClipOval( child: ClipOval(
child: snapshot.profileImage != null child: snapshot.profileImage != null
? Image.file(snapshot.profileImage) ? Image.file(snapshot.profileImage)
: (snapshot.user.profilePhotoName?.isNotEmpty ?? false) : (snapshot.user?.profilePhotoName?.isNotEmpty ?? false)
? Image.network(snapshot.user.profilePhotoName) ? Image.network(snapshot.user.profilePhotoName)
: const Icon( : const Icon(
Icons.person, Icons.person,

@ -29,11 +29,13 @@ class _ResetPasswordViewState extends State<ResetPasswordView> {
bool _passwordVisible = false; bool _passwordVisible = false;
bool _confirmPasswordVisible = false; bool _confirmPasswordVisible = false;
String newPassword = "";
String confirmPassword = "";
final GlobalKey<FormState> _formKey = GlobalKey<FormState>(); final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
_userProvider = Provider.of<UserProvider>(context);
return Form( return Form(
key: _formKey, key: _formKey,
child: Scaffold( child: Scaffold(
@ -49,7 +51,7 @@ class _ResetPasswordViewState extends State<ResetPasswordView> {
context.translation.pleaseEnterTheNewPassword.bodyText2(context).custom(color: AppColor.white20, fontWeight: FontWeight.w500), context.translation.pleaseEnterTheNewPassword.bodyText2(context).custom(color: AppColor.white20, fontWeight: FontWeight.w500),
32.height, 32.height,
AppTextFormField( AppTextFormField(
initialValue: _userProvider.newPassword, initialValue: "",
showBorder: true, showBorder: true,
validator: (value) => Validator.hasValue(value) ? null : context.translation.requiredField, validator: (value) => Validator.hasValue(value) ? null : context.translation.requiredField,
labelText: context.translation.password, labelText: context.translation.password,
@ -64,12 +66,12 @@ class _ResetPasswordViewState extends State<ResetPasswordView> {
}); });
}), }),
onSaved: (value) { onSaved: (value) {
_userProvider.newPassword = value; newPassword = value;
}, },
), ),
16.height, 16.height,
AppTextFormField( AppTextFormField(
initialValue: _userProvider.confirmPassword, initialValue: "",
labelText: context.translation.confirmPassword, labelText: context.translation.confirmPassword,
obscureText: !_confirmPasswordVisible, obscureText: !_confirmPasswordVisible,
showBorder: true, showBorder: true,
@ -79,41 +81,42 @@ class _ResetPasswordViewState extends State<ResetPasswordView> {
? context.translation.requiredField ? context.translation.requiredField
: context.translation.passwordLengthMessage, : context.translation.passwordLengthMessage,
onSaved: (value) { onSaved: (value) {
_userProvider.confirmPassword = value; confirmPassword = value;
}, },
suffixIcon: Icon( suffixIcon: Icon(
_confirmPasswordVisible ? Icons.visibility : Icons.visibility_off, _confirmPasswordVisible ? Icons.visibility : Icons.visibility_off,
color: context.isDark ? AppColor.neutral10 : AppColor.neutral20, color: context.isDark ? AppColor.neutral10 : AppColor.neutral20,
).paddingOnly(end: 12).onPress(() { setState(() { ).paddingOnly(end: 12).onPress(() {
_confirmPasswordVisible = !_confirmPasswordVisible; setState(() {
}); }), _confirmPasswordVisible = !_confirmPasswordVisible;
});
}),
), ),
], ],
), ),
).center.expanded, ).center.expanded,
AppFilledButton(label: context.translation.resetPassword, maxWidth: true, onPressed: () => _resetPassword(context: context)), AppFilledButton(label: context.translation.resetPassword, maxWidth: true, onPressed: () => _resetPassword(context)),
], ],
).paddingOnly(start: 16, end: 16, bottom: 24, top: 24), ).paddingOnly(start: 16, end: 16, bottom: 24, top: 24),
), ),
); );
} }
Future<void> _resetPassword({BuildContext context}) async { Future<void> _resetPassword(BuildContext context) async {
if (!_formKey.currentState.validate()) return; if (!_formKey.currentState.validate()) return;
_formKey.currentState.save(); _formKey.currentState.save();
if (_userProvider.newPassword != _userProvider.confirmPassword) { if (newPassword != confirmPassword) {
Fluttertoast.showToast(msg: 'Password not matched try again'); Fluttertoast.showToast(msg: 'Password not matched try again');
} else { } else {
UpdatePasswordModel updatePasswordModel = UpdatePasswordModel( _userProvider = Provider.of<UserProvider>(context);
password: _userProvider.newPassword, confirmPassword: _userProvider.confirmPassword, userId: _userProvider.verifyOtpModel.userId, token: _userProvider.verifyOtpModel.token); UpdatePasswordModel updatePasswordModel =
UpdatePasswordModel(password: newPassword, confirmPassword: confirmPassword, userId: _userProvider.verifyOtpModel.userId, token: _userProvider.verifyOtpModel.token);
GeneralResponseModel generalResponseModel = await _userProvider.updateNewPassword(context: context, updatePasswordModel: updatePasswordModel); GeneralResponseModel generalResponseModel = await _userProvider.updateNewPassword(context: context, updatePasswordModel: updatePasswordModel);
if (generalResponseModel.isSuccess) { if (generalResponseModel.isSuccess) {
_userProvider.newPassword = ''; newPassword = '';
_userProvider.confirmPassword = ''; confirmPassword = '';
Navigator.of(context).pushNamedAndRemoveUntil(LoginPage.routeName, (routes) => true); Navigator.of(context).pushNamedAndRemoveUntil(LoginPage.routeName, (routes) => true);
} }
} }
} }
} }

@ -130,7 +130,7 @@ class _LoginPageState extends State<LoginPage> {
Navigator.push(context, MaterialPageRoute(builder: (context)=>ForgetPasswordVerifyOtpView(data: {'employeeId':userNameController.text,'phoneNumber':response.data},))); Navigator.push(context, MaterialPageRoute(builder: (context)=>ForgetPasswordVerifyOtpView(data: {'employeeId':userNameController.text,'phoneNumber':response.data},)));
// Navigator.push(context, ForgetPasswordVerifyOtpView.routeName); // Navigator.push(context, ForgetPasswordVerifyOtpView.routeName);
}else{ }else{
Fluttertoast.showToast(msg: response?.message ?? context.translation.failedToCompleteRequest); context.showConfirmDialog(response?.message ?? context.translation.failedToCompleteRequest);
} }
}else{ }else{
Fluttertoast.showToast(msg: context.translation.employeeIdIsRequired); Fluttertoast.showToast(msg: context.translation.employeeIdIsRequired);
@ -159,7 +159,7 @@ class _LoginPageState extends State<LoginPage> {
await _settingProvider.setRememberMe(_user.userName, _user.password, rememberMe); await _settingProvider.setRememberMe(_user.userName, _user.password, rememberMe);
Navigator.pushNamed(context, LandPage.routeName); Navigator.pushReplacementNamed(context, LandPage.routeName);
} else { } else {
Fluttertoast.showToast(msg: _userProvider.user?.message ?? context.translation.failedToCompleteRequest); Fluttertoast.showToast(msg: _userProvider.user?.message ?? context.translation.failedToCompleteRequest);
} }

@ -1,6 +1,7 @@
import 'dart:async'; import 'dart:async';
import 'dart:developer'; import 'dart:developer';
import 'dart:io'; import 'dart:io';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:geolocator/geolocator.dart'; import 'package:geolocator/geolocator.dart';
import 'package:google_api_availability/google_api_availability.dart'; import 'package:google_api_availability/google_api_availability.dart';
@ -35,9 +36,7 @@ class SwipeGeneralUtils {
static bool get isLoading => _isLoadingVisible; static bool get isLoading => _isLoadingVisible;
void markFakeAttendance(dynamic sourceName, String lat, String long, @required BuildContext context) async {
void markFakeAttendance(dynamic sourceName, String lat, String long, @required BuildContext context) async {
showLoading(context); showLoading(context);
try { try {
hideLoading(navigatorKey.currentState.overlay.context); hideLoading(navigatorKey.currentState.overlay.context);
@ -49,9 +48,7 @@ class SwipeGeneralUtils {
} }
} }
void showLoading(BuildContext context) {
void showLoading(BuildContext context) {
WidgetsBinding.instance.addPostFrameCallback((_) { WidgetsBinding.instance.addPostFrameCallback((_) {
_isLoadingVisible = true; _isLoadingVisible = true;
showDialog( showDialog(
@ -65,7 +62,7 @@ class SwipeGeneralUtils {
}); });
} }
void hideLoading(BuildContext context) { void hideLoading(BuildContext context) {
if (_isLoadingVisible) { if (_isLoadingVisible) {
_isLoadingVisible = false; _isLoadingVisible = false;
Navigator.of(context).pop(); Navigator.of(context).pop();
@ -78,24 +75,21 @@ class SwipeGeneralUtils {
return prefs.getString(key) ?? ""; return prefs.getString(key) ?? "";
} }
void confirmDialog(cxt, String message, {VoidCallback onTap}) {
void confirmDialog(cxt, String message, {VoidCallback onTap}) {
showDialog( showDialog(
context: cxt, context: cxt,
builder: (BuildContext cxt) => ConfirmDialog(message: message, onTap: onTap), builder: (BuildContext cxt) => ConfirmDialog(message: message, onTap: onTap),
); );
} }
void showErrorDialog({String message, @required BuildContext context}) { void showErrorDialog({String message, @required BuildContext context}) {
showDialog( showDialog(
context: context, context: context,
builder: (context) => ConfirmDialog(message: message, title: 'Error', onTap: () => Navigator.pop(context)), builder: (context) => ConfirmDialog(message: message, title: 'Error', onTap: () => Navigator.pop(context)),
); );
} }
void showMDialog(context, {Widget child, Color backgroundColor, bool isDismissable = true, bool isBusniessCard = false}) async { void showMDialog(context, {Widget child, Color backgroundColor, bool isDismissable = true, bool isBusniessCard = false}) async {
return showDialog( return showDialog(
context: context, context: context,
barrierDismissible: isDismissable, barrierDismissible: isDismissable,
@ -115,7 +109,7 @@ class SwipeGeneralUtils {
); );
} }
Widget attendanceTypeCard(String title, String icon, bool isEnabled, VoidCallback onPress, BuildContext context) { Widget attendanceTypeCard(String title, String icon, bool isEnabled, VoidCallback onPress, BuildContext context) {
return Container( return Container(
padding: const EdgeInsets.all(12), padding: const EdgeInsets.all(12),
decoration: BoxDecoration( decoration: BoxDecoration(
@ -140,7 +134,7 @@ class SwipeGeneralUtils {
} }
//huawei permission part.... //huawei permission part....
void getHuaweiCurrentLocation({SwipeTypeEnum attendanceType, BuildContext context}) async { void getHuaweiCurrentLocation({SwipeTypeEnum attendanceType, BuildContext context}) async {
try { try {
showLoading(context); showLoading(context);
FusedLocationProviderClient locationService = FusedLocationProviderClient()..initFusedLocationService(); FusedLocationProviderClient locationService = FusedLocationProviderClient()..initFusedLocationService();
@ -156,8 +150,8 @@ class SwipeGeneralUtils {
_streamSubscription = locationService.onLocationData.listen( _streamSubscription = locationService.onLocationData.listen(
(Location location) async { (Location location) async {
hideLoading(context); hideLoading(context);
await locationService.removeLocationUpdates(requestCode); await locationService.removeLocationUpdates(requestCode); // todo #test on release mode.
handleSwipeOperation(swipeType: attendanceType, context: context,lat:location.latitude ,long:location.longitude ); handleSwipeOperation(swipeType: attendanceType, context: context, lat: location.latitude, long: location.longitude);
requestCode = 0; requestCode = 0;
}, },
); );
@ -169,14 +163,14 @@ class SwipeGeneralUtils {
} }
} }
Future<bool> requestPermissions() async { Future<bool> requestPermissions() async {
var result = await [ var result = await [
Permission.location, Permission.location,
].request(); ].request();
return (result[Permission.location] == PermissionStatus.granted || result[Permission.locationAlways] == PermissionStatus.granted); return (result[Permission.location] == PermissionStatus.granted || result[Permission.locationAlways] == PermissionStatus.granted);
} }
void checkHuaweiLocationPermission({SwipeTypeEnum attendanceType, BuildContext context}) async { void checkHuaweiLocationPermission({SwipeTypeEnum attendanceType, BuildContext context}) async {
// Permission_Handler permissionHandler = PermissionHandler(); // Permission_Handler permissionHandler = PermissionHandler();
LocationUtilities.isEnabled((bool isEnabled) async { LocationUtilities.isEnabled((bool isEnabled) async {
if (isEnabled) { if (isEnabled) {
@ -234,7 +228,7 @@ class SwipeGeneralUtils {
// } // }
} }
void handleSwipeOperation({@required SwipeTypeEnum swipeType, double lat, double long, BuildContext context}) { void handleSwipeOperation({@required SwipeTypeEnum swipeType, double lat, double long, BuildContext context}) {
switch (swipeType) { switch (swipeType) {
case SwipeTypeEnum.NFC: case SwipeTypeEnum.NFC:
handleNfcAttendance(latitude: lat, longitude: long, context: context); handleNfcAttendance(latitude: lat, longitude: long, context: context);
@ -243,16 +237,16 @@ class SwipeGeneralUtils {
performQrCodeAttendance(latitude: lat, longitude: long, context: context); performQrCodeAttendance(latitude: lat, longitude: long, context: context);
return; return;
case SwipeTypeEnum.Wifi: case SwipeTypeEnum.Wifi:
//TODO need to implement. performQrCodeAttendance(latitude: lat, longitude: long, context: context);
return; return;
} }
} }
String formatTimeOnly(DateTime dateTime) { String formatTimeOnly(DateTime dateTime) {
return DateFormat.Hms().format(dateTime); return DateFormat.Hms().format(dateTime);
} }
Future<void> performQrCodeAttendance({double latitude, double longitude, BuildContext context}) async { Future<void> performQrCodeAttendance({double latitude, double longitude, BuildContext context}) async {
UserProvider userProvider = Provider.of<UserProvider>(context, listen: false); UserProvider userProvider = Provider.of<UserProvider>(context, listen: false);
var qrCodeValue = await Navigator.of(context).push( var qrCodeValue = await Navigator.of(context).push(
@ -270,7 +264,7 @@ class SwipeGeneralUtils {
longitude: longitude, longitude: longitude,
); );
await userProvider.makeSwipe(model: swipeModel).then((swipeResponse) { await userProvider.makeSwipe(model: swipeModel).then((swipeResponse) {
if (swipeResponse.isSuccess) { if (swipeResponse.isSuccess) {
hideLoading(context); hideLoading(context);
Navigator.pushNamed(context, SwipeSuccessView.routeName); Navigator.pushNamed(context, SwipeSuccessView.routeName);
@ -289,8 +283,6 @@ class SwipeGeneralUtils {
); );
} }
}); });
} catch (ex) { } catch (ex) {
log('$ex'); log('$ex');
hideLoading(context); hideLoading(context);
@ -300,7 +292,7 @@ class SwipeGeneralUtils {
} }
} }
Future<void> handleNfcAttendance({double latitude = 0, double longitude = 0, BuildContext context}) async { Future<void> handleNfcAttendance({double latitude = 0, double longitude = 0, BuildContext context}) async {
// UserProvider _userProvider = Provider.of<UserProvider>(context,listen:false); // UserProvider _userProvider = Provider.of<UserProvider>(context,listen:false);
if (Platform.isIOS) { if (Platform.isIOS) {
@ -314,7 +306,7 @@ class SwipeGeneralUtils {
} }
} }
Future<void> _processNfcAttendance( Future<void> _processNfcAttendance(
String nfcId, String nfcId,
double latitude, double latitude,
double longitude, double longitude,
@ -322,18 +314,11 @@ class SwipeGeneralUtils {
) async { ) async {
showLoading(context); showLoading(context);
try { try {
final swipeModel = Swipe( final swipeModel = Swipe(swipeTypeValue: SwipeTypeEnum.NFC.getIntFromSwipeTypeEnum(), value: nfcId, latitude: latitude, longitude: longitude);
swipeTypeValue: SwipeTypeEnum.NFC.getIntFromSwipeTypeEnum(),
value: nfcId,
latitude: latitude,
longitude: longitude,
);
UserProvider userProvider = Provider.of<UserProvider>(context, listen: false); UserProvider userProvider = Provider.of<UserProvider>(context, listen: false);
final swipeResponse = await userProvider.makeSwipe(model: swipeModel); final swipeResponse = await userProvider.makeSwipe(model: swipeModel);
if (swipeResponse.isSuccess) { if (swipeResponse.isSuccess) {
hideLoading(context); hideLoading(context);
Navigator.pushNamed(context, SwipeSuccessView.routeName); Navigator.pushNamed(context, SwipeSuccessView.routeName);
@ -346,7 +331,7 @@ class SwipeGeneralUtils {
} }
} }
void handleSwipe({SwipeTypeEnum swipeType, @required bool isEnable, @required BuildContext context}) async { void handleSwipe({SwipeTypeEnum swipeType, @required bool isEnable, @required BuildContext context}) async {
if (!(await isGoogleServicesAvailable())) { if (!(await isGoogleServicesAvailable())) {
checkHuaweiLocationPermission(attendanceType: swipeType, context: context); checkHuaweiLocationPermission(attendanceType: swipeType, context: context);
} else { } else {
@ -390,7 +375,7 @@ class SwipeGeneralUtils {
} }
} }
void showInfoDialog({@required String message, VoidCallback onTap}) { void showInfoDialog({@required String message, VoidCallback onTap}) {
showDialog( showDialog(
context: navigatorKey.currentState.overlay.context, context: navigatorKey.currentState.overlay.context,
builder: (BuildContext cxt) => ConfirmDialog( builder: (BuildContext cxt) => ConfirmDialog(
@ -403,7 +388,7 @@ class SwipeGeneralUtils {
); );
} }
List<Widget> availableAttendanceMethodList({@required BuildContext context, @required UserProvider userProvider, @required bool isNfcSupported}) { List<Widget> availableAttendanceMethodList({@required BuildContext context, @required UserProvider userProvider, @required bool isNfcSupported}) {
List<Widget> availableMethods = []; List<Widget> availableMethods = [];
if (userProvider.user.enableNFC) { if (userProvider.user.enableNFC) {
availableMethods.add(attendanceTypeCard(SwipeTypeEnum.NFC.name, 'nfc_icon', isNfcSupported, () { availableMethods.add(attendanceTypeCard(SwipeTypeEnum.NFC.name, 'nfc_icon', isNfcSupported, () {
@ -417,6 +402,7 @@ class SwipeGeneralUtils {
handleSwipe(swipeType: SwipeTypeEnum.QR, isEnable: userProvider.user.enableQR, context: navigatorKey.currentState.overlay.context); handleSwipe(swipeType: SwipeTypeEnum.QR, isEnable: userProvider.user.enableQR, context: navigatorKey.currentState.overlay.context);
}, context)); }, context));
} }
userProvider.user.enableWifi= true;
if (userProvider.user.enableWifi) { if (userProvider.user.enableWifi) {
availableMethods.add(attendanceTypeCard(SwipeTypeEnum.Wifi.name, 'wifi_icon', userProvider.user.enableWifi, () { availableMethods.add(attendanceTypeCard(SwipeTypeEnum.Wifi.name, 'wifi_icon', userProvider.user.enableWifi, () {
Navigator.pop(context); Navigator.pop(context);
@ -426,7 +412,7 @@ class SwipeGeneralUtils {
return availableMethods; return availableMethods;
} }
void showSwipeTypeBottomSheetSheet({@required bool isNfcSupported}) { void showSwipeTypeBottomSheetSheet({@required bool isNfcSupported}) {
BuildContext context = navigatorKey.currentState.overlay.context; BuildContext context = navigatorKey.currentState.overlay.context;
UserProvider _userProvider = Provider.of<UserProvider>(context, listen: false); UserProvider _userProvider = Provider.of<UserProvider>(context, listen: false);
@ -457,7 +443,7 @@ class SwipeGeneralUtils {
); );
} }
void readNFc({Function(String) onRead}) { void readNFc({Function(String) onRead}) {
NfcManager.instance.startSession(onDiscovered: (NfcTag tag) async { NfcManager.instance.startSession(onDiscovered: (NfcTag tag) async {
MifareUltralight f; MifareUltralight f;
if (Platform.isAndroid) { if (Platform.isAndroid) {
@ -474,7 +460,7 @@ class SwipeGeneralUtils {
} }
//HUAWEI DECISION MAKING //HUAWEI DECISION MAKING
Future<bool> isGoogleServicesAvailable() async { Future<bool> isGoogleServicesAvailable() async {
GooglePlayServicesAvailability availability = await GoogleApiAvailability.instance.checkGooglePlayServicesAvailability(); GooglePlayServicesAvailability availability = await GoogleApiAvailability.instance.checkGooglePlayServicesAvailability();
String status = availability.toString().split('.').last; String status = availability.toString().split('.').last;
if (status == "success") { if (status == "success") {
@ -482,6 +468,4 @@ class SwipeGeneralUtils {
} }
return false; return false;
} }
} }

Loading…
Cancel
Save