Commit ee178d55 authored by Sai Srinivas's avatar Sai Srinivas
Browse files

09-07-2025 By Sai Srinivas

Network and Finance Module issue and Back
parent 2ade5aad
...@@ -24,6 +24,21 @@ class Paymentdetailsprovider extends ChangeNotifier { ...@@ -24,6 +24,21 @@ class Paymentdetailsprovider extends ChangeNotifier {
TextEditingController altMobController = TextEditingController(); TextEditingController altMobController = TextEditingController();
TextEditingController telController = TextEditingController(); TextEditingController telController = TextEditingController();
TextEditingController emailController = TextEditingController(); TextEditingController emailController = TextEditingController();
String? nameError;
String? designationError;
String? mobError;
String? altMobError;
String? telError;
String? emailError;
String? selectContactError;
String? selectPaymentError;
String? selectAmountError;
String? ReferenceError;
String? imageError;
List<PaymentModeList> _payment_mode_drop_down = []; List<PaymentModeList> _payment_mode_drop_down = [];
List<Contacts> _contacts_drop_down = []; List<Contacts> _contacts_drop_down = [];
String _paymentModeID = ""; String _paymentModeID = "";
...@@ -106,6 +121,7 @@ class Paymentdetailsprovider extends ChangeNotifier { ...@@ -106,6 +121,7 @@ class Paymentdetailsprovider extends ChangeNotifier {
_selectContact = value; _selectContact = value;
_contact = value?.name; _contact = value?.name;
_contactID = value?.mob1; _contactID = value?.mob1;
selectContactError = null;
notifyListeners(); notifyListeners();
} }
...@@ -113,11 +129,13 @@ class Paymentdetailsprovider extends ChangeNotifier { ...@@ -113,11 +129,13 @@ class Paymentdetailsprovider extends ChangeNotifier {
_selectPaymentModeList = value; _selectPaymentModeList = value;
_PaymentMode = value?.name ?? ""; _PaymentMode = value?.name ?? "";
_paymentModeID = value?.id ?? ""; _paymentModeID = value?.id ?? "";
selectPaymentError = null;
notifyListeners(); notifyListeners();
} }
set paymentModeID(value) { set paymentModeID(value) {
_paymentModeID = value; _paymentModeID = value;
selectPaymentError = null;
notifyListeners(); notifyListeners();
} }
...@@ -133,6 +151,7 @@ class Paymentdetailsprovider extends ChangeNotifier { ...@@ -133,6 +151,7 @@ class Paymentdetailsprovider extends ChangeNotifier {
set contactID(value) { set contactID(value) {
_contactID = value; _contactID = value;
selectContactError = null;
notifyListeners(); notifyListeners();
} }
...@@ -184,6 +203,12 @@ class Paymentdetailsprovider extends ChangeNotifier { ...@@ -184,6 +203,12 @@ class Paymentdetailsprovider extends ChangeNotifier {
_paymentModeID = ""; _paymentModeID = "";
} }
Amountcontroller.clear();
Referencecontroller.clear();
_image = null;
_imageName = null;
_image_picked = 0;
notifyListeners(); notifyListeners();
} else {} } else {}
} else { } else {
...@@ -204,6 +229,9 @@ class Paymentdetailsprovider extends ChangeNotifier { ...@@ -204,6 +229,9 @@ class Paymentdetailsprovider extends ChangeNotifier {
// if(!CheckValidations(context,reference, amount)){ // if(!CheckValidations(context,reference, amount)){
// return; // return;
// } // }
if(!validateSubmit(context)){
return;
}
print("came here"); print("came here");
var homeProvider = Provider.of<HomescreenNotifier>( var homeProvider = Provider.of<HomescreenNotifier>(
context, context,
...@@ -228,6 +256,11 @@ class Paymentdetailsprovider extends ChangeNotifier { ...@@ -228,6 +256,11 @@ class Paymentdetailsprovider extends ChangeNotifier {
print(data.paymentCollectionId); print(data.paymentCollectionId);
_CollectionId = data.paymentCollectionId ?? 0; _CollectionId = data.paymentCollectionId ?? 0;
notifyListeners(); notifyListeners();
Future.delayed(Duration(microseconds: 200), () {
if (_CollectionId != 0) {
showOTPSheetSheet(context);
}
});
} else {} } else {}
} else { } else {
// SharedpreferencesService().clearPreferences(); // SharedpreferencesService().clearPreferences();
...@@ -242,6 +275,241 @@ class Paymentdetailsprovider extends ChangeNotifier { ...@@ -242,6 +275,241 @@ class Paymentdetailsprovider extends ChangeNotifier {
} }
} }
Future<void> showOTPSheetSheet(BuildContext context) {
return showModalBottomSheet(
useSafeArea: true,
isDismissible: true,
isScrollControlled: true,
showDragHandle: true,
backgroundColor: Colors.white,
enableDrag: true,
context: context,
builder: (context) {
return StatefulBuilder(
builder: (context, setState) {
return SafeArea(
child: Padding(
padding: EdgeInsets.only(
bottom:
MediaQuery.of(
context,
).viewInsets.bottom, // This handles keyboard
),
child: Container(
margin: EdgeInsets.only(
bottom: 15,
left: 15,
right: 15,
top: 10,
),
child: SingleChildScrollView(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
children: [
Align(
alignment: Alignment.center,
child: Text(
"Enter OTP",
style: TextStyle(
color: AppColors.app_blue,
fontSize: 16,
),
),
),
SizedBox(height: 15),
Column(
children: [
Container(
alignment: Alignment.center,
height: 50,
margin: EdgeInsets.only(
left: 5.0,
right: 5.0,
),
child: PinCodeTextField(
appContext: context,
pastedTextStyle: TextStyle(
fontWeight: FontWeight.bold,
),
length: 4,
blinkWhenObscuring: true,
animationType: AnimationType.fade,
// validator: (v) {
// if (v!.length < 3) {
// return "I'm from validator";
// } else {
// return null;
// }
// },
pinTheme: PinTheme(
shape: PinCodeFieldShape.underline,
borderRadius: BorderRadius.circular(16),
fieldHeight: 60,
fieldWidth: 60,
activeFillColor:
AppColors.text_field_color,
activeColor: AppColors.app_blue,
selectedColor: AppColors.text_field_color,
selectedFillColor:
AppColors.text_field_color,
inactiveFillColor:
AppColors.text_field_color,
inactiveColor: AppColors.text_field_color,
fieldOuterPadding: EdgeInsets.only(
left: 5,
right: 5,
),
inactiveBorderWidth: 0,
activeBorderWidth: 0.5,
),
enableActiveFill: true,
keyboardType: TextInputType.number,
boxShadows: const [
BoxShadow(
offset: Offset(0, 1),
color: Colors.black12,
blurRadius: 10,
),
],
onCompleted: (String enteredCode) {
enteredOtp = enteredCode;
// clearText = true;
OTPVerifyAPI(context);
debugPrint("Completed");
},
// onTap: () {
// print("Pressed");
// },
onChanged: (String enteredCode) {
debugPrint(enteredCode);
enteredOtp = enteredCode;
},
onSubmitted: (String enteredCode) {
enteredOtp = enteredCode;
// clearText = true;
// Verify_otp();
},
enablePinAutofill: true,
useExternalAutoFillGroup: true,
beforeTextPaste: (text) {
debugPrint("Allowing to paste $text");
//if you return true then it will show the paste confirmation dialog. Otherwise if false, then nothing will happen.
//but you can show anything you want here, like your pop up saying wrong paste format or etc
return true;
},
),
),
SizedBox(height: 15),
Container(
alignment: Alignment.center,
height: 45,
margin: EdgeInsets.only(
left: 5.0,
right: 5.0,
top: 5.0,
bottom: 5.0,
),
child: InkResponse(
onTap: () {
ResendOtpAPI(context);
},
child: Center(
child: Text(
"Resend",
style: TextStyle(
fontWeight: FontWeight.w300,
),
),
),
),
),
InkResponse(
onTap: () {
Navigator.of(context).pop(false);
OTPVerifyAPI(context);
},
child: Container(
alignment: Alignment.center,
height: 45,
margin: EdgeInsets.only(
left: 5.0,
right: 5.0,
top: 5.0,
bottom: 5.0,
),
decoration: BoxDecoration(
color: AppColors.app_blue, //1487C9
borderRadius: BorderRadius.circular(15.0),
),
child: Center(
child: Text(
"Submit",
textAlign: TextAlign.center,
style: TextStyle(
fontSize: 15,
fontFamily: "JakartaMedium",
color: Colors.white,
),
),
),
),
),
],
),
],
),
),
),
),
);
},
);
},
);
}
bool validateSubmit(context){
selectContactError = null;
selectPaymentError = null;
selectAmountError = null;
ReferenceError = null;
imageError = null;
bool isValid = true;
print("clickedw");
if (_selectContact == null || _contactID.isEmpty) {
selectContactError = "Please Select Contact";
isValid = false;
}
if (_selectPaymentModeList==null||_paymentModeID == null) {
selectPaymentError = "Please Select Payment Type";
isValid = false;
}
if(Amountcontroller.text.trim().isEmpty){
selectAmountError = "Please Enter Amount";
isValid = false;
}
if(Referencecontroller.text.trim().isEmpty){
ReferenceError = "Please Enter Reference Number";
isValid = false;
}
if (_image_picked == 0) {
imageError = "Please add attachment";
isValid = false;
}
notifyListeners();
return isValid;
}
Future<void> OTPVerifyAPI(BuildContext context) async { Future<void> OTPVerifyAPI(BuildContext context) async {
try { try {
var homeProvider = Provider.of<HomescreenNotifier>( var homeProvider = Provider.of<HomescreenNotifier>(
...@@ -275,6 +543,11 @@ class Paymentdetailsprovider extends ChangeNotifier { ...@@ -275,6 +543,11 @@ class Paymentdetailsprovider extends ChangeNotifier {
emailController.clear(); emailController.clear();
_imageName = null; _imageName = null;
_image_picked = 0; _image_picked = 0;
selectContactError = null;
selectPaymentError = null;
selectAmountError = null;
ReferenceError = null;
imageError = null;
notifyListeners(); notifyListeners();
Navigator.pop(context, true); Navigator.pop(context, true);
Navigator.pop(context, true); Navigator.pop(context, true);
...@@ -340,6 +613,7 @@ class Paymentdetailsprovider extends ChangeNotifier { ...@@ -340,6 +613,7 @@ class Paymentdetailsprovider extends ChangeNotifier {
_image = File(galleryImage!.path); _image = File(galleryImage!.path);
_imageName = File(galleryImage!.name); _imageName = File(galleryImage!.name);
_image_picked = 1; _image_picked = 1;
imageError = null;
notifyListeners(); notifyListeners();
} catch (e) { } catch (e) {
debugPrint("mmmm: ${e.toString()}"); debugPrint("mmmm: ${e.toString()}");
...@@ -362,6 +636,7 @@ class Paymentdetailsprovider extends ChangeNotifier { ...@@ -362,6 +636,7 @@ class Paymentdetailsprovider extends ChangeNotifier {
_imageName = File(galleryImage!.name); _imageName = File(galleryImage!.name);
_image_picked = 1; _image_picked = 1;
imageError = null;
notifyListeners(); notifyListeners();
} catch (e) { } catch (e) {
debugPrint("mmmm: ${e.toString()}"); debugPrint("mmmm: ${e.toString()}");
...@@ -418,20 +693,22 @@ class Paymentdetailsprovider extends ChangeNotifier { ...@@ -418,20 +693,22 @@ class Paymentdetailsprovider extends ChangeNotifier {
BuildContext context, BuildContext context,
actName, actName,
generatorID, generatorID,
name, accountName,
designation, referenceID,
mobile, genId,
altMobile,
telephone,
email,
) async { ) async {
if (actName == "Generator") { if (actName == "Generator") {
_saveAgainst = "generator"; _saveAgainst = "generator";
_genId = generatorID; _genId = generatorID;
} else { } else {
_saveAgainst = "account"; _saveAgainst = "account";
_accountId = generatorID; _accountId = generatorID;
} }
notifyListeners();
if(!validAddContact(context)){
return;
}
try { try {
var homeProvider = Provider.of<HomescreenNotifier>( var homeProvider = Provider.of<HomescreenNotifier>(
context, context,
...@@ -441,12 +718,12 @@ class Paymentdetailsprovider extends ChangeNotifier { ...@@ -441,12 +718,12 @@ class Paymentdetailsprovider extends ChangeNotifier {
homeProvider.empId, homeProvider.empId,
homeProvider.session, homeProvider.session,
_genId, _genId,
name, nameController.text,
designation, designationController.text,
mobile, mobController.text,
altMobile, altMobController.text,
telephone, telController.text,
email, emailController.text,
_saveAgainst, _saveAgainst,
_accountId, _accountId,
); );
...@@ -455,14 +732,13 @@ class Paymentdetailsprovider extends ChangeNotifier { ...@@ -455,14 +732,13 @@ class Paymentdetailsprovider extends ChangeNotifier {
if (data.sessionExists == 1) { if (data.sessionExists == 1) {
if (data.error == 0) { if (data.error == 0) {
toast(context, "Added Successfully"); toast(context, "Added Successfully");
Amountcontroller.clear(); resetAddContect();
Referencecontroller.clear(); LoadNumbersAPI(
nameController.clear(); context,
designationController.clear(); _saveAgainst,
mobController.clear(); referenceID,
altMobController.clear(); genId,
telController.clear(); );
emailController.clear();
Navigator.pop(context, true); Navigator.pop(context, true);
} else if (data.error == 1) { } else if (data.error == 1) {
toast(context, data.message); toast(context, data.message);
...@@ -479,4 +755,44 @@ class Paymentdetailsprovider extends ChangeNotifier { ...@@ -479,4 +755,44 @@ class Paymentdetailsprovider extends ChangeNotifier {
print(e.toString()); print(e.toString());
} }
} }
resetAddContect(){
Amountcontroller.clear();
Referencecontroller.clear();
nameController.clear();
designationController.clear();
mobController.clear();
altMobController.clear();
telController.clear();
emailController.clear();
nameError = null;
designationError = null;
mobError = null;
altMobError = null;
telError = null;
emailError = null;
notifyListeners();
}
bool validAddContact(context){
bool isValid = true;
nameError = null;
designationError = null;
mobError = null;
altMobError = null;
telError = null;
emailError = null;
if(nameController.text.trim().toString().isEmpty){
nameError = "Please Enter Name";
isValid = false;
}
if(mobController.text.trim().toString().isEmpty){
mobError = "Please Enter Mobile Number";
isValid = false;
}
notifyListeners();
return isValid;
}
} }
String didPushed = ""; String didPushed = "";
String didPopped = ""; String didPopped = "";
var connection;
...@@ -17,8 +17,9 @@ toast(context, text) { ...@@ -17,8 +17,9 @@ toast(context, text) {
fontSize: 15.0, fontSize: 15.0,
); );
} }
String connection = "Online";
class MyConnectivity { class MyConnectivity {
MyConnectivity._(); MyConnectivity._();
static final _instance = MyConnectivity._(); static final _instance = MyConnectivity._();
...@@ -28,11 +29,11 @@ class MyConnectivity { ...@@ -28,11 +29,11 @@ class MyConnectivity {
Stream get myStream => _controller.stream; Stream get myStream => _controller.stream;
void initialise() async { void initialise() async {
ConnectivityResult result = List<ConnectivityResult> result =
(await _connectivity.checkConnectivity()) as ConnectivityResult; (await _connectivity.checkConnectivity());
_checkStatus(result); _checkStatus(result.first);
_connectivity.onConnectivityChanged.listen((result) { _connectivity.onConnectivityChanged.listen((result) {
_checkStatus(result as ConnectivityResult); _checkStatus(result.first);
}); });
} }
......
...@@ -4,6 +4,7 @@ import 'package:flutter_svg/svg.dart'; ...@@ -4,6 +4,7 @@ import 'package:flutter_svg/svg.dart';
import 'package:http/http.dart'; import 'package:http/http.dart';
import 'GlobalConstants.dart'; import 'GlobalConstants.dart';
import 'app_colors.dart'; import 'app_colors.dart';
import 'package:app_settings/app_settings.dart';
PreferredSizeWidget appbar(BuildContext context, title) { PreferredSizeWidget appbar(BuildContext context, title) {
return AppBar( return AppBar(
...@@ -207,11 +208,11 @@ NoNetwork(context) { ...@@ -207,11 +208,11 @@ NoNetwork(context) {
// Image.asset('assets/images/no_wifi.png', width: 100, height: 100), // Image.asset('assets/images/no_wifi.png', width: 100, height: 100),
SizedBox(height: 10), SizedBox(height: 10),
Center( Center(
child: Text( child: Text("You are Offline",
"You are Offline", style: TextStyle(
style: TextStyle(fontSize: 16, color: AppColors.semi_black), fontSize: 16,
overflow: TextOverflow.ellipsis, color: AppColors.semi_black
), ),),
), ),
SizedBox(height: 10), SizedBox(height: 10),
Text( Text(
...@@ -220,7 +221,6 @@ NoNetwork(context) { ...@@ -220,7 +221,6 @@ NoNetwork(context) {
style: TextStyle(fontSize: 12, color: AppColors.grey_semi), style: TextStyle(fontSize: 12, color: AppColors.grey_semi),
overflow: TextOverflow.ellipsis, overflow: TextOverflow.ellipsis,
), ),
SizedBox(height: 0),
Text( Text(
"Make you sure you’ve\n turn on your internet connection", "Make you sure you’ve\n turn on your internet connection",
textAlign: TextAlign.center, textAlign: TextAlign.center,
...@@ -230,14 +230,14 @@ NoNetwork(context) { ...@@ -230,14 +230,14 @@ NoNetwork(context) {
SizedBox(height: 40), SizedBox(height: 40),
TextButton( TextButton(
onPressed: () async { onPressed: () async {
// await AppSettings.openAppSettings(type: AppSettingsType.wifi); await AppSettings.openAppSettings(type: AppSettingsType.wifi);
}, },
style: TextButton.styleFrom(foregroundColor: Colors.white), style: TextButton.styleFrom(foregroundColor: Colors.white),
child: Container( child: Container(
height: 45, height: 45,
width: 150, width: 150,
decoration: BoxDecoration( decoration: BoxDecoration(
color: AppColors.thick_navy_blue, color: AppColors.app_blue,
borderRadius: BorderRadius.all(Radius.circular(10)), borderRadius: BorderRadius.all(Radius.circular(10)),
), ),
child: Center( child: Center(
......
import 'dart:io'; import 'dart:io';
import 'package:connectivity_plus/connectivity_plus.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart'; import 'package:flutter_svg/svg.dart';
import 'package:generp/screens/notifierExports.dart'; import 'package:generp/screens/notifierExports.dart';
...@@ -9,6 +10,8 @@ import 'package:generp/screens/CheckInScreen.dart'; ...@@ -9,6 +10,8 @@ import 'package:generp/screens/CheckInScreen.dart';
import 'package:intl/intl.dart'; import 'package:intl/intl.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import '../Utils/commonServices.dart';
class AttendanceScreen extends StatefulWidget { class AttendanceScreen extends StatefulWidget {
const AttendanceScreen({super.key}); const AttendanceScreen({super.key});
...@@ -19,10 +22,17 @@ class AttendanceScreen extends StatefulWidget { ...@@ -19,10 +22,17 @@ class AttendanceScreen extends StatefulWidget {
class _AttendanceScreenState extends State<AttendanceScreen> { class _AttendanceScreenState extends State<AttendanceScreen> {
var att_provider; var att_provider;
var homeProvider; var homeProvider;
Map _source = {ConnectivityResult.mobile: true};
final MyConnectivity _connectivity = MyConnectivity.instance;
@override @override
void initState() { void initState() {
super.initState(); super.initState();
_connectivity.initialise();
_connectivity.myStream.listen((source) {
setState(() => _source = source);
});
homeProvider = Provider.of<HomescreenNotifier>(context, listen: false); homeProvider = Provider.of<HomescreenNotifier>(context, listen: false);
WidgetsBinding.instance.addPostFrameCallback((_) { WidgetsBinding.instance.addPostFrameCallback((_) {
att_provider = Provider.of<AttendanceNotifier>(context, listen: false); att_provider = Provider.of<AttendanceNotifier>(context, listen: false);
...@@ -31,22 +41,34 @@ class _AttendanceScreenState extends State<AttendanceScreen> { ...@@ -31,22 +41,34 @@ class _AttendanceScreenState extends State<AttendanceScreen> {
}); });
} }
// return Container(
// // onWillPop: _onBackPressed, @override
// child: (Platform.isAndroid void dispose() {
// ? WillPopScope( // TODO: implement dispose
// onWillPop: onBackPressed, super.dispose();
// child: _scaffold(context), _connectivity.disposeStream();
// ) }
// : _scaffold(context)))
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Platform.isAndroid switch (_source.keys.toList()[0]) {
case ConnectivityResult.mobile:
connection = 'Online';
break;
case ConnectivityResult.wifi:
connection = 'Online';
break;
case ConnectivityResult.none:
default:
connection = 'Offline';
}
return (connection == 'Online')
? Platform.isAndroid
? WillPopScope( ? WillPopScope(
onWillPop: () => onBackPressed(context), onWillPop: () => onBackPressed(context),
child: SafeArea(top: false, bottom: true, child: _scaffold(context)), child: SafeArea(top: false, bottom: true, child: _scaffold(context)),
) )
: _scaffold(context); : _scaffold(context):NoNetwork(context);
} }
Widget _scaffold(BuildContext context) { Widget _scaffold(BuildContext context) {
......
import 'dart:io'; import 'dart:io';
import 'package:connectivity_plus/connectivity_plus.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_image_compress/flutter_image_compress.dart'; import 'package:flutter_image_compress/flutter_image_compress.dart';
import 'package:generp/Utils/app_colors.dart'; import 'package:generp/Utils/app_colors.dart';
...@@ -9,6 +10,7 @@ import 'package:image_picker/image_picker.dart'; ...@@ -9,6 +10,7 @@ import 'package:image_picker/image_picker.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import '../Notifiers/CheckInProvider.dart'; import '../Notifiers/CheckInProvider.dart';
import '../Utils/commonServices.dart';
import 'FrontCameraCapture.dart'; import 'FrontCameraCapture.dart';
class CheckInOutScreen extends StatefulWidget { class CheckInOutScreen extends StatefulWidget {
...@@ -20,10 +22,16 @@ class CheckInOutScreen extends StatefulWidget { ...@@ -20,10 +22,16 @@ class CheckInOutScreen extends StatefulWidget {
} }
class _CheckInOutScreenState extends State<CheckInOutScreen> { class _CheckInOutScreenState extends State<CheckInOutScreen> {
Map _source = {ConnectivityResult.mobile: true};
final MyConnectivity _connectivity = MyConnectivity.instance;
@override @override
void initState() { void initState() {
super.initState(); super.initState();
_connectivity.initialise();
_connectivity.myStream.listen((source) {
setState(() => _source = source);
},);
WidgetsBinding.instance.addPostFrameCallback((_) { WidgetsBinding.instance.addPostFrameCallback((_) {
var prov = Provider.of<CheckInOutProvider>(context, listen: false); var prov = Provider.of<CheckInOutProvider>(context, listen: false);
prov.getLocationPermission(context); prov.getLocationPermission(context);
...@@ -35,16 +43,28 @@ class _CheckInOutScreenState extends State<CheckInOutScreen> { ...@@ -35,16 +43,28 @@ class _CheckInOutScreenState extends State<CheckInOutScreen> {
void dispose() { void dispose() {
// TODO: implement dispose // TODO: implement dispose
super.dispose(); super.dispose();
_connectivity.disposeStream();
} }
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
switch (_source.keys.toList()[0]) {
case ConnectivityResult.mobile:
connection = 'Online';
break;
case ConnectivityResult.wifi:
connection = 'Online';
break;
case ConnectivityResult.none:
default:
connection = 'Offline';
}
Size size = MediaQuery.of(context).size; Size size = MediaQuery.of(context).size;
double screenWidth = MediaQuery.of(context).size.width; double screenWidth = MediaQuery.of(context).size.width;
return Consumer<CheckInOutProvider>( return (connection=='Online')?Consumer<CheckInOutProvider>(
builder: (context, provider, child) { builder: (context, provider, child) {
return WillPopScope( return WillPopScope(
onWillPop: () { onWillPop: () {
...@@ -280,7 +300,7 @@ class _CheckInOutScreenState extends State<CheckInOutScreen> { ...@@ -280,7 +300,7 @@ class _CheckInOutScreenState extends State<CheckInOutScreen> {
), ),
); );
}, },
); ):NoNetwork(context);
} }
} }
......
This diff is collapsed.
import 'dart:io'; import 'dart:io';
import 'package:connectivity_plus/connectivity_plus.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:qr_code_scanner/qr_code_scanner.dart'; import 'package:qr_code_scanner/qr_code_scanner.dart';
import '../Notifiers/scanLoginProvider.dart'; import '../Notifiers/scanLoginProvider.dart';
import '../Utils/app_colors.dart'; import '../Utils/app_colors.dart';
import '../Utils/commonServices.dart';
import '../Utils/commonWidgets.dart'; import '../Utils/commonWidgets.dart';
class Scannerlogin extends StatefulWidget { class Scannerlogin extends StatefulWidget {
...@@ -16,67 +18,100 @@ class Scannerlogin extends StatefulWidget { ...@@ -16,67 +18,100 @@ class Scannerlogin extends StatefulWidget {
} }
class _ScannerloginState extends State<Scannerlogin> { class _ScannerloginState extends State<Scannerlogin> {
Map _source = {ConnectivityResult.mobile: true};
final MyConnectivity _connectivity = MyConnectivity.instance;
@override @override
Widget build(BuildContext context) { void initState() {
return Consumer<Scanloginprovider>( // TODO: implement initState
builder: (context, provider, child) { _connectivity.initialise();
return WillPopScope( _connectivity.myStream.listen((source) {
onWillPop: () => onBackPressed(context),
child: SafeArea( setState(() => _source = source);
top: false, });
bottom: Platform.isIOS?false:true,
child: Scaffold(
resizeToAvoidBottomInset: true,
backgroundColor: AppColors.scaffold_bg_color,
appBar: appbar(context, "QR Login"),
body: Container(
decoration: BoxDecoration(color: Colors.black),
child: Column(
children: [
Spacer(),
Container(
height: 250,
child: QRView( super.initState();
}
key: provider.scannerKey, @override
onQRViewCreated: (p0) { void dispose() {
provider.onQRViewCreated(p0, context); // TODO: implement dispose
}, super.dispose();
formatsAllowed: [BarcodeFormat.qrcode], _connectivity.disposeStream();
cameraFacing: CameraFacing.back, }
@override
Widget build(BuildContext context) {
switch (_source.keys.toList()[0]) {
case ConnectivityResult.mobile:
connection = 'Online';
break;
case ConnectivityResult.wifi:
connection = 'Online';
break;
case ConnectivityResult.none:
default:
connection = 'Offline';
}
return (connection == 'Online')
? Consumer<Scanloginprovider>(
builder: (context, provider, child) {
return WillPopScope(
onWillPop: () => onBackPressed(context),
child: SafeArea(
top: false,
bottom: Platform.isIOS ? false : true,
child: Scaffold(
resizeToAvoidBottomInset: true,
backgroundColor: AppColors.scaffold_bg_color,
appBar: appbar(context, "QR Login"),
body: Container(
decoration: BoxDecoration(color: Colors.black),
child: Column(
children: [
Spacer(),
Container(
height: 250,
overlay: QrScannerOverlayShape( child: QRView(
key: provider.scannerKey,
onQRViewCreated: (p0) {
provider.onQRViewCreated(p0, context);
},
formatsAllowed: [BarcodeFormat.qrcode],
cameraFacing: CameraFacing.back,
borderColor: AppColors.app_blue, overlay: QrScannerOverlayShape(
borderRadius: 20, borderColor: AppColors.app_blue,
borderLength: 60, borderRadius: 20,
borderWidth: 10, borderLength: 60,
cutOutSize: 250.0, borderWidth: 10,
cutOutSize: 250.0,
),
),
), ),
), SizedBox(height: 25),
), Text(
SizedBox(height: 25), "Scan QR",
Text( textAlign: TextAlign.center,
"Scan QR", style: TextStyle(fontSize: 18, color: Colors.white),
textAlign: TextAlign.center, ),
style: TextStyle(fontSize: 18, color: Colors.white), Text(
), "to Login",
Text( textAlign: TextAlign.center,
"to Login", style: TextStyle(fontSize: 14, color: Colors.white),
textAlign: TextAlign.center, ),
style: TextStyle(fontSize: 14, color: Colors.white), Spacer(),
),
Spacer(),
SizedBox(height: 50), SizedBox(height: 50),
], ],
),
),
), ),
), ),
), );
), },
); )
}, : NoNetwork(context);
);
} }
} }
import 'dart:async'; import 'dart:async';
import 'dart:io'; import 'dart:io';
import 'package:connectivity_plus/connectivity_plus.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
...@@ -13,6 +14,8 @@ import 'package:generp/screens/WebERPScreen.dart'; ...@@ -13,6 +14,8 @@ import 'package:generp/screens/WebERPScreen.dart';
import 'package:permission_handler/permission_handler.dart'; import 'package:permission_handler/permission_handler.dart';
import 'package:url_launcher/url_launcher.dart'; import 'package:url_launcher/url_launcher.dart';
import '../Utils/commonServices.dart';
const MAX_PROGRESS = 100; const MAX_PROGRESS = 100;
Future main() async { Future main() async {
...@@ -31,6 +34,11 @@ class WebERPIOS extends StatefulWidget { ...@@ -31,6 +34,11 @@ class WebERPIOS extends StatefulWidget {
} }
class _WebERPIOSState extends State<WebERPIOS> { class _WebERPIOSState extends State<WebERPIOS> {
Map _source = {ConnectivityResult.mobile: true};
final MyConnectivity _connectivity = MyConnectivity.instance;
final Completer<InAppWebViewController> _controller = final Completer<InAppWebViewController> _controller =
Completer<InAppWebViewController>(); Completer<InAppWebViewController>();
var empId = ""; var empId = "";
...@@ -48,7 +56,10 @@ class _WebERPIOSState extends State<WebERPIOS> { ...@@ -48,7 +56,10 @@ class _WebERPIOSState extends State<WebERPIOS> {
@override @override
void initState() { void initState() {
// loadData(); // loadData();
_connectivity.initialise();
_connectivity.myStream.listen((source) {
setState(() => _source = source);
});
pullToRefreshController = pullToRefreshController =
kIsWeb kIsWeb
? null ? null
...@@ -73,16 +84,28 @@ class _WebERPIOSState extends State<WebERPIOS> { ...@@ -73,16 +84,28 @@ class _WebERPIOSState extends State<WebERPIOS> {
@override @override
void dispose() { void dispose() {
super.dispose(); super.dispose();
_connectivity.disposeStream();
} }
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Platform.isAndroid switch (_source.keys.toList()[0]) {
case ConnectivityResult.mobile:
connection = 'Online';
break;
case ConnectivityResult.wifi:
connection = 'Online';
break;
case ConnectivityResult.none:
default:
connection = 'Offline';
}
return connection=="Online"?Platform.isAndroid
? WillPopScope( ? WillPopScope(
onWillPop: () => onBackPressed(context), onWillPop: () => onBackPressed(context),
child: SafeArea(top: false, bottom: true, child: _scaffold(context)), child: SafeArea(top: false, bottom: true, child: _scaffold(context)),
) )
: _scaffold(context); : _scaffold(context):NoNetwork(context);
} }
Widget _scaffold(BuildContext context) { Widget _scaffold(BuildContext context) {
......
import 'dart:async'; import 'dart:async';
import 'dart:convert'; import 'dart:convert';
import 'dart:io'; import 'dart:io';
import 'package:connectivity_plus/connectivity_plus.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:flutter_local_notifications/flutter_local_notifications.dart'; import 'package:flutter_local_notifications/flutter_local_notifications.dart';
import 'package:generp/Utils/commonServices.dart'; import 'package:generp/Utils/commonServices.dart';
...@@ -33,6 +34,7 @@ Future runErpScreenApp() async { ...@@ -33,6 +34,7 @@ Future runErpScreenApp() async {
class WebErpScreen extends StatefulWidget { class WebErpScreen extends StatefulWidget {
final String erp_url; final String erp_url;
const WebErpScreen({super.key, required this.erp_url}); const WebErpScreen({super.key, required this.erp_url});
@override @override
...@@ -40,6 +42,10 @@ class WebErpScreen extends StatefulWidget { ...@@ -40,6 +42,10 @@ class WebErpScreen extends StatefulWidget {
} }
class _WebErpScreenState extends State<WebErpScreen> { class _WebErpScreenState extends State<WebErpScreen> {
Map _source = {ConnectivityResult.mobile: true};
final MyConnectivity _connectivity = MyConnectivity.instance;
final Completer<InAppWebViewController> _controller = final Completer<InAppWebViewController> _controller =
Completer<InAppWebViewController>(); Completer<InAppWebViewController>();
var empId = ""; var empId = "";
...@@ -62,6 +68,10 @@ class _WebErpScreenState extends State<WebErpScreen> { ...@@ -62,6 +68,10 @@ class _WebErpScreenState extends State<WebErpScreen> {
void initState() { void initState() {
// loadData(); // loadData();
super.initState(); super.initState();
_connectivity.initialise();
_connectivity.myStream.listen((source) {
setState(() => _source = source);
});
pullToRefreshController = pullToRefreshController =
kIsWeb kIsWeb
? null ? null
...@@ -107,10 +117,22 @@ class _WebErpScreenState extends State<WebErpScreen> { ...@@ -107,10 +117,22 @@ class _WebErpScreenState extends State<WebErpScreen> {
@override @override
void dispose() { void dispose() {
super.dispose(); super.dispose();
_connectivity.disposeStream();
} }
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
switch (_source.keys.toList()[0]) {
case ConnectivityResult.mobile:
connection = 'Online';
break;
case ConnectivityResult.wifi:
connection = 'Online';
break;
case ConnectivityResult.none:
default:
connection = 'Offline';
}
return WillPopScope( return WillPopScope(
onWillPop: () async { onWillPop: () async {
if (await _webViewController!.canGoBack()) { if (await _webViewController!.canGoBack()) {
...@@ -119,7 +141,7 @@ class _WebErpScreenState extends State<WebErpScreen> { ...@@ -119,7 +141,7 @@ class _WebErpScreenState extends State<WebErpScreen> {
} }
return true; // Allow default back button behavior return true; // Allow default back button behavior
}, },
child: SafeArea( child: connection=="Online"?SafeArea(
top: false, top: false,
bottom: Platform.isIOS?false:true, bottom: Platform.isIOS?false:true,
child: Scaffold( child: Scaffold(
...@@ -502,7 +524,7 @@ class _WebErpScreenState extends State<WebErpScreen> { ...@@ -502,7 +524,7 @@ class _WebErpScreenState extends State<WebErpScreen> {
), ),
), ),
), ),
), ):NoNetwork(context),
); );
} }
// Future<void> saveBase64File(String base64Data, String filename, String mimeType) async { // Future<void> saveBase64File(String base64Data, String filename, String mimeType) async {
......
import 'dart:io'; import 'dart:io';
import 'package:connectivity_plus/connectivity_plus.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:flutter_svg/svg.dart'; import 'package:flutter_svg/svg.dart';
...@@ -9,6 +10,7 @@ import 'package:provider/provider.dart'; ...@@ -9,6 +10,7 @@ import 'package:provider/provider.dart';
import 'package:generp/screens/screensExports.dart'; import 'package:generp/screens/screensExports.dart';
import '../../Notifiers/crmProvider/crmDashboardProvider.dart'; import '../../Notifiers/crmProvider/crmDashboardProvider.dart';
import '../../Utils/app_colors.dart'; import '../../Utils/app_colors.dart';
import '../../Utils/commonServices.dart';
import '../../Utils/commonWidgets.dart'; import '../../Utils/commonWidgets.dart';
class CrmdashboardScreen extends StatefulWidget { class CrmdashboardScreen extends StatefulWidget {
...@@ -20,10 +22,16 @@ class CrmdashboardScreen extends StatefulWidget { ...@@ -20,10 +22,16 @@ class CrmdashboardScreen extends StatefulWidget {
class _CrmdashboardScreenState extends State<CrmdashboardScreen> { class _CrmdashboardScreenState extends State<CrmdashboardScreen> {
FocusNode focusNode = FocusNode(); FocusNode focusNode = FocusNode();
Map _source = {ConnectivityResult.mobile: true};
final MyConnectivity _connectivity = MyConnectivity.instance;
@override @override
void initState() { void initState() {
super.initState(); super.initState();
_connectivity.initialise();
_connectivity.myStream.listen((event) {
setState(() => _source = event);
});
WidgetsBinding.instance.addPostFrameCallback((timeStamp) { WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
var prov = Provider.of<Crmdashboardprovider>(context, listen: false); var prov = Provider.of<Crmdashboardprovider>(context, listen: false);
prov.accessPagesAPIFunction(context); prov.accessPagesAPIFunction(context);
...@@ -31,15 +39,37 @@ class _CrmdashboardScreenState extends State<CrmdashboardScreen> { ...@@ -31,15 +39,37 @@ class _CrmdashboardScreenState extends State<CrmdashboardScreen> {
prov.crmPendingTasksAPIFunction(context); prov.crmPendingTasksAPIFunction(context);
}); });
} }
@override
void dispose() {
// TODO: implement dispose
super.dispose();
_connectivity.disposeStream();
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Platform.isAndroid switch (_source.keys.toList()[0]) {
? WillPopScope( case ConnectivityResult.mobile:
onWillPop: () => onBackPressed(context), connection = 'Online';
child: SafeArea(top: false, bottom: true, child: _scaffold(context)), break;
) case ConnectivityResult.wifi:
: _scaffold(context); connection = 'Online';
break;
case ConnectivityResult.none:
default:
connection = 'Offline';
}
return (connection == "Online")
? Platform.isAndroid
? WillPopScope(
onWillPop: () => onBackPressed(context),
child: SafeArea(
top: false,
bottom: true,
child: _scaffold(context),
),
)
: _scaffold(context)
: NoNetwork(context);
} }
Widget _scaffold(BuildContext context) { Widget _scaffold(BuildContext context) {
......
import 'dart:io'; import 'dart:io';
import 'package:connectivity_plus/connectivity_plus.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
...@@ -10,6 +11,7 @@ import 'package:generp/Utils/commonWidgets.dart'; ...@@ -10,6 +11,7 @@ import 'package:generp/Utils/commonWidgets.dart';
import 'package:generp/screens/finance/FileViewer.dart'; import 'package:generp/screens/finance/FileViewer.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import '../../Utils/commonServices.dart';
import '../commonDateRangeFilter.dart'; import '../commonDateRangeFilter.dart';
import 'PaymentRequestionListDetails.dart'; import 'PaymentRequestionListDetails.dart';
...@@ -30,11 +32,19 @@ class Allpaymentrequesitionlistsbymodes extends StatefulWidget { ...@@ -30,11 +32,19 @@ class Allpaymentrequesitionlistsbymodes extends StatefulWidget {
class _AllpaymentrequesitionlistsbymodesState class _AllpaymentrequesitionlistsbymodesState
extends State<Allpaymentrequesitionlistsbymodes> { extends State<Allpaymentrequesitionlistsbymodes> {
late Commondaterangefilter cf;
Map _source = {ConnectivityResult.mobile: true};
final MyConnectivity _connectivity = MyConnectivity.instance;
late Commondaterangefilter cf;
@override @override
void initState() { void initState() {
// TODO: implement initState // TODO: implement initState
super.initState(); super.initState();
_connectivity.initialise();
_connectivity.myStream.listen((source) {
setState(() => _source = source);
});
WidgetsBinding.instance.addPostFrameCallback((timeStamp) { WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
cf = Commondaterangefilter(); cf = Commondaterangefilter();
var provider = Provider.of<Requestionlistprovider>( var provider = Provider.of<Requestionlistprovider>(
...@@ -52,9 +62,27 @@ class _AllpaymentrequesitionlistsbymodesState ...@@ -52,9 +62,27 @@ class _AllpaymentrequesitionlistsbymodesState
}); });
} }
@override
void dispose() {
// TODO: implement dispose
super.dispose();
_connectivity.disposeStream();
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Consumer<Requestionlistprovider>( switch (_source.keys.toList()[0]) {
case ConnectivityResult.mobile:
connection = 'Online';
break;
case ConnectivityResult.wifi:
connection = 'Online';
break;
case ConnectivityResult.none:
default:
connection = 'Offline';
}
return connection=="Online"?Consumer<Requestionlistprovider>(
builder: (context, provider, child) { builder: (context, provider, child) {
final requestLists = provider.requisitionList; final requestLists = provider.requisitionList;
return WillPopScope( return WillPopScope(
...@@ -383,7 +411,7 @@ class _AllpaymentrequesitionlistsbymodesState ...@@ -383,7 +411,7 @@ class _AllpaymentrequesitionlistsbymodesState
), ),
); );
}, },
); ):NoNetwork(context);
} }
Future<void> _showOptionsSheet(BuildContext context) { Future<void> _showOptionsSheet(BuildContext context) {
......
import 'dart:io'; import 'dart:io';
import 'package:connectivity_plus/connectivity_plus.dart';
import 'package:dropdown_button2/dropdown_button2.dart'; import 'package:dropdown_button2/dropdown_button2.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
...@@ -12,6 +13,7 @@ import 'package:generp/screens/commom/accountsListDetails.dart'; ...@@ -12,6 +13,7 @@ import 'package:generp/screens/commom/accountsListDetails.dart';
import 'package:intl/intl.dart'; import 'package:intl/intl.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import '../../Utils/commonServices.dart';
import 'FileViewer.dart'; import 'FileViewer.dart';
class Paymentrequestionlistdetails extends StatefulWidget { class Paymentrequestionlistdetails extends StatefulWidget {
...@@ -33,6 +35,11 @@ class Paymentrequestionlistdetails extends StatefulWidget { ...@@ -33,6 +35,11 @@ class Paymentrequestionlistdetails extends StatefulWidget {
class _PaymentrequestionlistdetailsState class _PaymentrequestionlistdetailsState
extends State<Paymentrequestionlistdetails> { extends State<Paymentrequestionlistdetails> {
Map _source = {ConnectivityResult.mobile: true};
final MyConnectivity _connectivity = MyConnectivity.instance;
List<FocusNode> focusNodes = List.generate(10, (index) => FocusNode(),); List<FocusNode> focusNodes = List.generate(10, (index) => FocusNode(),);
Dropdowntheme ddtheme = Dropdowntheme(); Dropdowntheme ddtheme = Dropdowntheme();
TextEditingController approvedAmount = TextEditingController(); TextEditingController approvedAmount = TextEditingController();
...@@ -63,6 +70,10 @@ class _PaymentrequestionlistdetailsState ...@@ -63,6 +70,10 @@ class _PaymentrequestionlistdetailsState
void initState() { void initState() {
// TODO: implement initState // TODO: implement initState
super.initState(); super.initState();
_connectivity.initialise();
_connectivity.myStream.listen((source) {
setState(() => _source = source);
});
WidgetsBinding.instance.addPostFrameCallback((timeStamp) { WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
var provider = Provider.of<Requesitionlidtdetailsprovider>( var provider = Provider.of<Requesitionlidtdetailsprovider>(
context, context,
...@@ -77,12 +88,24 @@ class _PaymentrequestionlistdetailsState ...@@ -77,12 +88,24 @@ class _PaymentrequestionlistdetailsState
void dispose() { void dispose() {
// TODO: implement dispose // TODO: implement dispose
focusNodes.map((e)=>e.dispose()); focusNodes.map((e)=>e.dispose());
_connectivity.disposeStream();
super.dispose(); super.dispose();
} }
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Consumer<Requesitionlidtdetailsprovider>( switch (_source.keys.toList()[0]) {
case ConnectivityResult.mobile:
connection = 'Online';
break;
case ConnectivityResult.wifi:
connection = 'Online';
break;
case ConnectivityResult.none:
default:
connection = 'Offline';
}
return connection=="Online"?Consumer<Requesitionlidtdetailsprovider>(
builder: (context, provider, child) { builder: (context, provider, child) {
var req_det = provider.requestsDetails; var req_det = provider.requestsDetails;
isLevel1Finalized = [ isLevel1Finalized = [
...@@ -574,7 +597,7 @@ class _PaymentrequestionlistdetailsState ...@@ -574,7 +597,7 @@ class _PaymentrequestionlistdetailsState
}, },
); );
}, },
); ):NoNetwork(context);
} }
Future<void> _showLevelApprovalSheet(BuildContext context, paymentID) { Future<void> _showLevelApprovalSheet(BuildContext context, paymentID) {
......
import 'dart:io'; import 'dart:io';
import 'package:connectivity_plus/connectivity_plus.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
...@@ -10,6 +11,7 @@ import 'package:generp/Utils/dropdownTheme.dart'; ...@@ -10,6 +11,7 @@ import 'package:generp/Utils/dropdownTheme.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import '../../Notifiers/financeProvider/paymentReceiptsProvider.dart'; import '../../Notifiers/financeProvider/paymentReceiptsProvider.dart';
import '../../Utils/app_colors.dart'; import '../../Utils/app_colors.dart';
import '../../Utils/commonServices.dart';
import '../../Utils/commonWidgets.dart'; import '../../Utils/commonWidgets.dart';
class Addpaymentreceiptlist extends StatefulWidget { class Addpaymentreceiptlist extends StatefulWidget {
...@@ -23,10 +25,18 @@ class Addpaymentreceiptlist extends StatefulWidget { ...@@ -23,10 +25,18 @@ class Addpaymentreceiptlist extends StatefulWidget {
class _AddpaymentreceiptlistState extends State<Addpaymentreceiptlist> { class _AddpaymentreceiptlistState extends State<Addpaymentreceiptlist> {
Dropdowntheme ddtheme = Dropdowntheme(); Dropdowntheme ddtheme = Dropdowntheme();
List<FocusNode> focusNodes = List.generate(12, (index) => FocusNode()); List<FocusNode> focusNodes = List.generate(12, (index) => FocusNode());
Map _source = {ConnectivityResult.mobile: true};
final MyConnectivity _connectivity = MyConnectivity.instance;
@override @override
void initState() { void initState() {
// TODO: implement initState // TODO: implement initState
super.initState(); super.initState();
_connectivity.initialise();
_connectivity.myStream.listen((source) {
setState(() => _source = source);
});
WidgetsBinding.instance.addPostFrameCallback((timeStamp) { WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
var provider = Provider.of<Paymentreceiptsprovider>( var provider = Provider.of<Paymentreceiptsprovider>(
context, context,
...@@ -39,6 +49,7 @@ class _AddpaymentreceiptlistState extends State<Addpaymentreceiptlist> { ...@@ -39,6 +49,7 @@ class _AddpaymentreceiptlistState extends State<Addpaymentreceiptlist> {
@override @override
void dispose() { void dispose() {
focusNodes.map((e) => e.dispose()); focusNodes.map((e) => e.dispose());
_connectivity.disposeStream();
super.dispose(); super.dispose();
} }
...@@ -49,7 +60,18 @@ class _AddpaymentreceiptlistState extends State<Addpaymentreceiptlist> { ...@@ -49,7 +60,18 @@ class _AddpaymentreceiptlistState extends State<Addpaymentreceiptlist> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Consumer<Paymentreceiptsprovider>( switch (_source.keys.toList()[0]) {
case ConnectivityResult.mobile:
connection = 'Online';
break;
case ConnectivityResult.wifi:
connection = 'Online';
break;
case ConnectivityResult.none:
default:
connection = 'Offline';
}
return connection=="Online"?Consumer<Paymentreceiptsprovider>(
builder: (context, provider, child) { builder: (context, provider, child) {
return WillPopScope( return WillPopScope(
child: SafeArea( child: SafeArea(
...@@ -651,7 +673,7 @@ class _AddpaymentreceiptlistState extends State<Addpaymentreceiptlist> { ...@@ -651,7 +673,7 @@ class _AddpaymentreceiptlistState extends State<Addpaymentreceiptlist> {
}, },
); );
}, },
); ):NoNetwork(context);
} }
// void _showDialog(Widget child) { // void _showDialog(Widget child) {
......
import 'dart:io'; import 'dart:io';
import 'package:connectivity_plus/connectivity_plus.dart';
import 'package:dropdown_button2/dropdown_button2.dart'; import 'package:dropdown_button2/dropdown_button2.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
...@@ -13,6 +14,7 @@ import 'package:intl/intl.dart'; ...@@ -13,6 +14,7 @@ import 'package:intl/intl.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import '../../Models/financeModels/addDirectPaymentResponse.dart'; import '../../Models/financeModels/addDirectPaymentResponse.dart';
import '../../Utils/commonServices.dart';
class Directpaymentrequesitionlist extends StatefulWidget { class Directpaymentrequesitionlist extends StatefulWidget {
final String pageTitleName; final String pageTitleName;
...@@ -29,10 +31,17 @@ class _DirectpaymentrequesitionlistState ...@@ -29,10 +31,17 @@ class _DirectpaymentrequesitionlistState
Dropdowntheme ddtheme = Dropdowntheme(); Dropdowntheme ddtheme = Dropdowntheme();
List<FocusNode> focusNodes = List.generate(12, (index) => FocusNode()); List<FocusNode> focusNodes = List.generate(12, (index) => FocusNode());
Map _source = {ConnectivityResult.mobile: true};
final MyConnectivity _connectivity = MyConnectivity.instance;
@override @override
void initState() { void initState() {
// TODO: implement initState // TODO: implement initState
super.initState(); super.initState();
_connectivity.initialise();
_connectivity.myStream.listen((source) {
setState(() => _source = source);
});
WidgetsBinding.instance.addPostFrameCallback((timeStamp) { WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
var provider = Provider.of<Requestionlistprovider>( var provider = Provider.of<Requestionlistprovider>(
context, context,
...@@ -45,6 +54,7 @@ class _DirectpaymentrequesitionlistState ...@@ -45,6 +54,7 @@ class _DirectpaymentrequesitionlistState
@override @override
void dispose() { void dispose() {
focusNodes.map((e) => e.dispose()); focusNodes.map((e) => e.dispose());
_connectivity.disposeStream();
super.dispose(); super.dispose();
} }
...@@ -55,7 +65,18 @@ class _DirectpaymentrequesitionlistState ...@@ -55,7 +65,18 @@ class _DirectpaymentrequesitionlistState
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Consumer<Requestionlistprovider>( switch (_source.keys.toList()[0]) {
case ConnectivityResult.mobile:
connection = 'Online';
break;
case ConnectivityResult.wifi:
connection = 'Online';
break;
case ConnectivityResult.none:
default:
connection = 'Offline';
}
return connection=="Online"?Consumer<Requestionlistprovider>(
builder: (context, provider, child) { builder: (context, provider, child) {
return WillPopScope( return WillPopScope(
child: SafeArea( child: SafeArea(
...@@ -653,7 +674,7 @@ class _DirectpaymentrequesitionlistState ...@@ -653,7 +674,7 @@ class _DirectpaymentrequesitionlistState
}, },
); );
}, },
); ):NoNetwork(context);
} }
// void _showDialog(Widget child) { // void _showDialog(Widget child) {
......
import 'dart:io'; import 'dart:io';
import 'package:connectivity_plus/connectivity_plus.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart'; import 'package:flutter_svg/svg.dart';
import 'package:generp/Notifiers/financeProvider/DashboardProvider.dart'; import 'package:generp/Notifiers/financeProvider/DashboardProvider.dart';
...@@ -8,6 +9,8 @@ import 'package:generp/Utils/commonWidgets.dart'; ...@@ -8,6 +9,8 @@ import 'package:generp/Utils/commonWidgets.dart';
import 'package:generp/screens/screensExports.dart'; import 'package:generp/screens/screensExports.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import '../../Utils/commonServices.dart';
class Financedashboard extends StatefulWidget { class Financedashboard extends StatefulWidget {
const Financedashboard({super.key}); const Financedashboard({super.key});
...@@ -16,25 +19,56 @@ class Financedashboard extends StatefulWidget { ...@@ -16,25 +19,56 @@ class Financedashboard extends StatefulWidget {
} }
class _FinancedashboardState extends State<Financedashboard> { class _FinancedashboardState extends State<Financedashboard> {
Map _source = {ConnectivityResult.mobile: true};
final MyConnectivity _connectivity = MyConnectivity.instance;
@override @override
void initState() { void initState() {
// TODO: implement initState // TODO: implement initState
super.initState(); super.initState();
_connectivity.initialise();
_connectivity.myStream.listen((source) {
setState(() => _source = source);
});
WidgetsBinding.instance.addPostFrameCallback((timeStamp) { WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
var provider = Provider.of<Dashboardprovider>(context, listen: false); var provider = Provider.of<Dashboardprovider>(context, listen: false);
provider.DashboardPagesAPIFunction(context); provider.DashboardPagesAPIFunction(context);
provider.addFormfinanceFormAccessPagesAPIFunction(context); provider.addFormfinanceFormAccessPagesAPIFunction(context);
}); });
} }
@override
void dispose() {
// TODO: implement dispose
super.dispose();
_connectivity.disposeStream();
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Platform.isAndroid switch (_source.keys.toList()[0]) {
? WillPopScope( case ConnectivityResult.mobile:
onWillPop: () => onBackPressed(context), connection = 'Online';
child: SafeArea(top: false, bottom: true, child: _scaffold(context)), break;
) case ConnectivityResult.wifi:
: _scaffold(context); connection = 'Online';
break;
case ConnectivityResult.none:
default:
connection = 'Offline';
}
return (connection == "Online")
? Platform.isAndroid
? WillPopScope(
onWillPop: () => onBackPressed(context),
child: SafeArea(
top: false,
bottom: true,
child: _scaffold(context),
),
)
: _scaffold(context)
: NoNetwork(context);
} }
Widget _scaffold(BuildContext context) { Widget _scaffold(BuildContext context) {
......
import 'dart:io'; import 'dart:io';
import 'package:connectivity_plus/connectivity_plus.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart'; import 'package:flutter_svg/svg.dart';
import 'package:generp/Utils/app_colors.dart'; import 'package:generp/Utils/app_colors.dart';
...@@ -7,6 +8,7 @@ import 'package:generp/Utils/commonWidgets.dart'; ...@@ -7,6 +8,7 @@ import 'package:generp/Utils/commonWidgets.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import '../../Notifiers/financeProvider/paymentRequisitionPaymentsListProvider.dart'; import '../../Notifiers/financeProvider/paymentRequisitionPaymentsListProvider.dart';
import '../../Utils/commonServices.dart';
import 'FileViewer.dart'; import 'FileViewer.dart';
class Paymentdetailspaymentrequisition extends StatefulWidget { class Paymentdetailspaymentrequisition extends StatefulWidget {
...@@ -28,10 +30,17 @@ class _PaymentdetailspaymentrequisitionState ...@@ -28,10 +30,17 @@ class _PaymentdetailspaymentrequisitionState
extends State<Paymentdetailspaymentrequisition> { extends State<Paymentdetailspaymentrequisition> {
Map _source = {ConnectivityResult.mobile: true};
final MyConnectivity _connectivity = MyConnectivity.instance;
@override @override
void initState() { void initState() {
// TODO: implement initState // TODO: implement initState
super.initState(); super.initState();
_connectivity.initialise();
_connectivity.myStream.listen((source) {
setState(() => _source = source);
});
WidgetsBinding.instance.addPostFrameCallback((timeStamp) { WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
var provider = Provider.of<Paymentrequisitionpaymentslistprovider>( var provider = Provider.of<Paymentrequisitionpaymentslistprovider>(
context, context,
...@@ -41,9 +50,27 @@ class _PaymentdetailspaymentrequisitionState ...@@ -41,9 +50,27 @@ class _PaymentdetailspaymentrequisitionState
}); });
} }
@override
void dispose() {
// TODO: implement dispose
super.dispose();
_connectivity.disposeStream();
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Consumer<Paymentrequisitionpaymentslistprovider>( switch (_source.keys.toList()[0]) {
case ConnectivityResult.mobile:
connection = 'Online';
break;
case ConnectivityResult.wifi:
connection = 'Online';
break;
case ConnectivityResult.none:
default:
connection = 'Offline';
}
return connection=="Online"?Consumer<Paymentrequisitionpaymentslistprovider>(
builder: (context, provider, child) { builder: (context, provider, child) {
var payment_det = provider.paymentDetails; var payment_det = provider.paymentDetails;
...@@ -213,7 +240,7 @@ class _PaymentdetailspaymentrequisitionState ...@@ -213,7 +240,7 @@ class _PaymentdetailspaymentrequisitionState
}, },
); );
}, },
); ):NoNetwork(context);
} }
} }
import 'dart:io'; import 'dart:io';
import 'package:connectivity_plus/connectivity_plus.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart'; import 'package:flutter_svg/svg.dart';
import 'package:generp/Utils/app_colors.dart'; import 'package:generp/Utils/app_colors.dart';
import 'package:generp/Utils/commonWidgets.dart'; import 'package:generp/Utils/commonWidgets.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import '../../Notifiers/financeProvider/paymentReceiptsProvider.dart'; import '../../Notifiers/financeProvider/paymentReceiptsProvider.dart';
import '../../Utils/commonServices.dart';
import 'FileViewer.dart'; import 'FileViewer.dart';
class Paymentreceiptdetails extends StatefulWidget { class Paymentreceiptdetails extends StatefulWidget {
...@@ -26,11 +28,18 @@ class Paymentreceiptdetails extends StatefulWidget { ...@@ -26,11 +28,18 @@ class Paymentreceiptdetails extends StatefulWidget {
class _PaymentreceiptdetailsState class _PaymentreceiptdetailsState
extends State<Paymentreceiptdetails> { extends State<Paymentreceiptdetails> {
Map _source = {ConnectivityResult.mobile: true};
final MyConnectivity _connectivity = MyConnectivity.instance;
@override @override
void initState() { void initState() {
// TODO: implement initState // TODO: implement initState
super.initState(); super.initState();
_connectivity.initialise();
_connectivity.myStream.listen((source) {
setState(() => _source = source);
});
WidgetsBinding.instance.addPostFrameCallback((timeStamp) { WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
var provider = Provider.of<Paymentreceiptsprovider>( var provider = Provider.of<Paymentreceiptsprovider>(
context, context,
...@@ -39,10 +48,28 @@ class _PaymentreceiptdetailsState ...@@ -39,10 +48,28 @@ class _PaymentreceiptdetailsState
provider.paymentsListDetailsAPI(context, widget.paymentRequestId); provider.paymentsListDetailsAPI(context, widget.paymentRequestId);
}); });
} }
@override
void dispose() {
// TODO: implement dispose
super.dispose();
_connectivity.disposeStream();
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Consumer<Paymentreceiptsprovider>( switch (_source.keys.toList()[0]) {
case ConnectivityResult.mobile:
connection = 'Online';
break;
case ConnectivityResult.wifi:
connection = 'Online';
break;
case ConnectivityResult.none:
default:
connection = 'Offline';
}
return connection=="Online"?
Consumer<Paymentreceiptsprovider>(
builder: (context, provider, child) { builder: (context, provider, child) {
var payment_det = provider.receiptDetails; var payment_det = provider.receiptDetails;
...@@ -190,7 +217,7 @@ class _PaymentreceiptdetailsState ...@@ -190,7 +217,7 @@ class _PaymentreceiptdetailsState
}, },
); );
}, },
); ):NoNetwork(context);
} }
} }
This diff is collapsed.
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment