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 {
TextEditingController altMobController = TextEditingController();
TextEditingController telController = 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<Contacts> _contacts_drop_down = [];
String _paymentModeID = "";
......@@ -106,6 +121,7 @@ class Paymentdetailsprovider extends ChangeNotifier {
_selectContact = value;
_contact = value?.name;
_contactID = value?.mob1;
selectContactError = null;
notifyListeners();
}
......@@ -113,11 +129,13 @@ class Paymentdetailsprovider extends ChangeNotifier {
_selectPaymentModeList = value;
_PaymentMode = value?.name ?? "";
_paymentModeID = value?.id ?? "";
selectPaymentError = null;
notifyListeners();
}
set paymentModeID(value) {
_paymentModeID = value;
selectPaymentError = null;
notifyListeners();
}
......@@ -133,6 +151,7 @@ class Paymentdetailsprovider extends ChangeNotifier {
set contactID(value) {
_contactID = value;
selectContactError = null;
notifyListeners();
}
......@@ -184,6 +203,12 @@ class Paymentdetailsprovider extends ChangeNotifier {
_paymentModeID = "";
}
Amountcontroller.clear();
Referencecontroller.clear();
_image = null;
_imageName = null;
_image_picked = 0;
notifyListeners();
} else {}
} else {
......@@ -204,6 +229,9 @@ class Paymentdetailsprovider extends ChangeNotifier {
// if(!CheckValidations(context,reference, amount)){
// return;
// }
if(!validateSubmit(context)){
return;
}
print("came here");
var homeProvider = Provider.of<HomescreenNotifier>(
context,
......@@ -228,6 +256,11 @@ class Paymentdetailsprovider extends ChangeNotifier {
print(data.paymentCollectionId);
_CollectionId = data.paymentCollectionId ?? 0;
notifyListeners();
Future.delayed(Duration(microseconds: 200), () {
if (_CollectionId != 0) {
showOTPSheetSheet(context);
}
});
} else {}
} else {
// SharedpreferencesService().clearPreferences();
......@@ -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 {
try {
var homeProvider = Provider.of<HomescreenNotifier>(
......@@ -275,6 +543,11 @@ class Paymentdetailsprovider extends ChangeNotifier {
emailController.clear();
_imageName = null;
_image_picked = 0;
selectContactError = null;
selectPaymentError = null;
selectAmountError = null;
ReferenceError = null;
imageError = null;
notifyListeners();
Navigator.pop(context, true);
Navigator.pop(context, true);
......@@ -340,6 +613,7 @@ class Paymentdetailsprovider extends ChangeNotifier {
_image = File(galleryImage!.path);
_imageName = File(galleryImage!.name);
_image_picked = 1;
imageError = null;
notifyListeners();
} catch (e) {
debugPrint("mmmm: ${e.toString()}");
......@@ -362,6 +636,7 @@ class Paymentdetailsprovider extends ChangeNotifier {
_imageName = File(galleryImage!.name);
_image_picked = 1;
imageError = null;
notifyListeners();
} catch (e) {
debugPrint("mmmm: ${e.toString()}");
......@@ -418,20 +693,22 @@ class Paymentdetailsprovider extends ChangeNotifier {
BuildContext context,
actName,
generatorID,
name,
designation,
mobile,
altMobile,
telephone,
email,
accountName,
referenceID,
genId,
) async {
if (actName == "Generator") {
_saveAgainst = "generator";
_genId = generatorID;
} else {
_saveAgainst = "account";
_accountId = generatorID;
}
notifyListeners();
if(!validAddContact(context)){
return;
}
try {
var homeProvider = Provider.of<HomescreenNotifier>(
context,
......@@ -441,12 +718,12 @@ class Paymentdetailsprovider extends ChangeNotifier {
homeProvider.empId,
homeProvider.session,
_genId,
name,
designation,
mobile,
altMobile,
telephone,
email,
nameController.text,
designationController.text,
mobController.text,
altMobController.text,
telController.text,
emailController.text,
_saveAgainst,
_accountId,
);
......@@ -455,14 +732,13 @@ class Paymentdetailsprovider extends ChangeNotifier {
if (data.sessionExists == 1) {
if (data.error == 0) {
toast(context, "Added Successfully");
Amountcontroller.clear();
Referencecontroller.clear();
nameController.clear();
designationController.clear();
mobController.clear();
altMobController.clear();
telController.clear();
emailController.clear();
resetAddContect();
LoadNumbersAPI(
context,
_saveAgainst,
referenceID,
genId,
);
Navigator.pop(context, true);
} else if (data.error == 1) {
toast(context, data.message);
......@@ -479,4 +755,44 @@ class Paymentdetailsprovider extends ChangeNotifier {
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 didPopped = "";
var connection;
......@@ -17,8 +17,9 @@ toast(context, text) {
fontSize: 15.0,
);
}
String connection = "Online";
class MyConnectivity {
MyConnectivity._();
static final _instance = MyConnectivity._();
......@@ -28,11 +29,11 @@ class MyConnectivity {
Stream get myStream => _controller.stream;
void initialise() async {
ConnectivityResult result =
(await _connectivity.checkConnectivity()) as ConnectivityResult;
_checkStatus(result);
List<ConnectivityResult> result =
(await _connectivity.checkConnectivity());
_checkStatus(result.first);
_connectivity.onConnectivityChanged.listen((result) {
_checkStatus(result as ConnectivityResult);
_checkStatus(result.first);
});
}
......
......@@ -4,6 +4,7 @@ import 'package:flutter_svg/svg.dart';
import 'package:http/http.dart';
import 'GlobalConstants.dart';
import 'app_colors.dart';
import 'package:app_settings/app_settings.dart';
PreferredSizeWidget appbar(BuildContext context, title) {
return AppBar(
......@@ -207,11 +208,11 @@ NoNetwork(context) {
// Image.asset('assets/images/no_wifi.png', width: 100, height: 100),
SizedBox(height: 10),
Center(
child: Text(
"You are Offline",
style: TextStyle(fontSize: 16, color: AppColors.semi_black),
overflow: TextOverflow.ellipsis,
),
child: Text("You are Offline",
style: TextStyle(
fontSize: 16,
color: AppColors.semi_black
),),
),
SizedBox(height: 10),
Text(
......@@ -220,7 +221,6 @@ NoNetwork(context) {
style: TextStyle(fontSize: 12, color: AppColors.grey_semi),
overflow: TextOverflow.ellipsis,
),
SizedBox(height: 0),
Text(
"Make you sure you’ve\n turn on your internet connection",
textAlign: TextAlign.center,
......@@ -230,14 +230,14 @@ NoNetwork(context) {
SizedBox(height: 40),
TextButton(
onPressed: () async {
// await AppSettings.openAppSettings(type: AppSettingsType.wifi);
await AppSettings.openAppSettings(type: AppSettingsType.wifi);
},
style: TextButton.styleFrom(foregroundColor: Colors.white),
child: Container(
height: 45,
width: 150,
decoration: BoxDecoration(
color: AppColors.thick_navy_blue,
color: AppColors.app_blue,
borderRadius: BorderRadius.all(Radius.circular(10)),
),
child: Center(
......
import 'dart:io';
import 'package:connectivity_plus/connectivity_plus.dart';
import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart';
import 'package:generp/screens/notifierExports.dart';
......@@ -9,6 +10,8 @@ import 'package:generp/screens/CheckInScreen.dart';
import 'package:intl/intl.dart';
import 'package:provider/provider.dart';
import '../Utils/commonServices.dart';
class AttendanceScreen extends StatefulWidget {
const AttendanceScreen({super.key});
......@@ -19,10 +22,17 @@ class AttendanceScreen extends StatefulWidget {
class _AttendanceScreenState extends State<AttendanceScreen> {
var att_provider;
var homeProvider;
Map _source = {ConnectivityResult.mobile: true};
final MyConnectivity _connectivity = MyConnectivity.instance;
@override
void initState() {
super.initState();
_connectivity.initialise();
_connectivity.myStream.listen((source) {
setState(() => _source = source);
});
homeProvider = Provider.of<HomescreenNotifier>(context, listen: false);
WidgetsBinding.instance.addPostFrameCallback((_) {
att_provider = Provider.of<AttendanceNotifier>(context, listen: false);
......@@ -31,22 +41,34 @@ class _AttendanceScreenState extends State<AttendanceScreen> {
});
}
// return Container(
// // onWillPop: _onBackPressed,
// child: (Platform.isAndroid
// ? WillPopScope(
// onWillPop: onBackPressed,
// child: _scaffold(context),
// )
// : _scaffold(context)))
@override
void dispose() {
// TODO: implement dispose
super.dispose();
_connectivity.disposeStream();
}
@override
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(
onWillPop: () => onBackPressed(context),
child: SafeArea(top: false, bottom: true, child: _scaffold(context)),
)
: _scaffold(context);
: _scaffold(context):NoNetwork(context);
}
Widget _scaffold(BuildContext context) {
......
import 'dart:io';
import 'package:connectivity_plus/connectivity_plus.dart';
import 'package:flutter/material.dart';
import 'package:flutter_image_compress/flutter_image_compress.dart';
import 'package:generp/Utils/app_colors.dart';
......@@ -9,6 +10,7 @@ import 'package:image_picker/image_picker.dart';
import 'package:provider/provider.dart';
import '../Notifiers/CheckInProvider.dart';
import '../Utils/commonServices.dart';
import 'FrontCameraCapture.dart';
class CheckInOutScreen extends StatefulWidget {
......@@ -20,10 +22,16 @@ class CheckInOutScreen extends StatefulWidget {
}
class _CheckInOutScreenState extends State<CheckInOutScreen> {
Map _source = {ConnectivityResult.mobile: true};
final MyConnectivity _connectivity = MyConnectivity.instance;
@override
void initState() {
super.initState();
_connectivity.initialise();
_connectivity.myStream.listen((source) {
setState(() => _source = source);
},);
WidgetsBinding.instance.addPostFrameCallback((_) {
var prov = Provider.of<CheckInOutProvider>(context, listen: false);
prov.getLocationPermission(context);
......@@ -35,16 +43,28 @@ class _CheckInOutScreenState extends State<CheckInOutScreen> {
void dispose() {
// TODO: implement dispose
super.dispose();
_connectivity.disposeStream();
}
@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';
}
Size size = MediaQuery.of(context).size;
double screenWidth = MediaQuery.of(context).size.width;
return Consumer<CheckInOutProvider>(
return (connection=='Online')?Consumer<CheckInOutProvider>(
builder: (context, provider, child) {
return WillPopScope(
onWillPop: () {
......@@ -280,7 +300,7 @@ class _CheckInOutScreenState extends State<CheckInOutScreen> {
),
);
},
);
):NoNetwork(context);
}
}
......
This diff is collapsed.
import 'dart:io';
import 'package:connectivity_plus/connectivity_plus.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:qr_code_scanner/qr_code_scanner.dart';
import '../Notifiers/scanLoginProvider.dart';
import '../Utils/app_colors.dart';
import '../Utils/commonServices.dart';
import '../Utils/commonWidgets.dart';
class Scannerlogin extends StatefulWidget {
......@@ -16,67 +18,100 @@ class Scannerlogin extends StatefulWidget {
}
class _ScannerloginState extends State<Scannerlogin> {
Map _source = {ConnectivityResult.mobile: true};
final MyConnectivity _connectivity = MyConnectivity.instance;
@override
Widget build(BuildContext context) {
return 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,
void initState() {
// TODO: implement initState
_connectivity.initialise();
_connectivity.myStream.listen((source) {
setState(() => _source = source);
});
child: QRView(
super.initState();
}
key: provider.scannerKey,
onQRViewCreated: (p0) {
provider.onQRViewCreated(p0, context);
},
formatsAllowed: [BarcodeFormat.qrcode],
cameraFacing: CameraFacing.back,
@override
void dispose() {
// TODO: implement dispose
super.dispose();
_connectivity.disposeStream();
}
@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,
borderRadius: 20,
borderLength: 60,
borderWidth: 10,
cutOutSize: 250.0,
overlay: QrScannerOverlayShape(
borderColor: AppColors.app_blue,
borderRadius: 20,
borderLength: 60,
borderWidth: 10,
cutOutSize: 250.0,
),
),
),
),
),
SizedBox(height: 25),
Text(
"Scan QR",
textAlign: TextAlign.center,
style: TextStyle(fontSize: 18, color: Colors.white),
),
Text(
"to Login",
textAlign: TextAlign.center,
style: TextStyle(fontSize: 14, color: Colors.white),
),
Spacer(),
SizedBox(height: 25),
Text(
"Scan QR",
textAlign: TextAlign.center,
style: TextStyle(fontSize: 18, color: Colors.white),
),
Text(
"to Login",
textAlign: TextAlign.center,
style: TextStyle(fontSize: 14, color: Colors.white),
),
Spacer(),
SizedBox(height: 50),
],
SizedBox(height: 50),
],
),
),
),
),
),
),
);
},
);
);
},
)
: NoNetwork(context);
}
}
import 'dart:async';
import 'dart:io';
import 'package:connectivity_plus/connectivity_plus.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
......@@ -13,6 +14,8 @@ import 'package:generp/screens/WebERPScreen.dart';
import 'package:permission_handler/permission_handler.dart';
import 'package:url_launcher/url_launcher.dart';
import '../Utils/commonServices.dart';
const MAX_PROGRESS = 100;
Future main() async {
......@@ -31,6 +34,11 @@ class WebERPIOS extends StatefulWidget {
}
class _WebERPIOSState extends State<WebERPIOS> {
Map _source = {ConnectivityResult.mobile: true};
final MyConnectivity _connectivity = MyConnectivity.instance;
final Completer<InAppWebViewController> _controller =
Completer<InAppWebViewController>();
var empId = "";
......@@ -48,7 +56,10 @@ class _WebERPIOSState extends State<WebERPIOS> {
@override
void initState() {
// loadData();
_connectivity.initialise();
_connectivity.myStream.listen((source) {
setState(() => _source = source);
});
pullToRefreshController =
kIsWeb
? null
......@@ -73,16 +84,28 @@ class _WebERPIOSState extends State<WebERPIOS> {
@override
void dispose() {
super.dispose();
_connectivity.disposeStream();
}
@override
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(
onWillPop: () => onBackPressed(context),
child: SafeArea(top: false, bottom: true, child: _scaffold(context)),
)
: _scaffold(context);
: _scaffold(context):NoNetwork(context);
}
Widget _scaffold(BuildContext context) {
......
import 'dart:async';
import 'dart:convert';
import 'dart:io';
import 'package:connectivity_plus/connectivity_plus.dart';
import 'package:flutter/services.dart';
import 'package:flutter_local_notifications/flutter_local_notifications.dart';
import 'package:generp/Utils/commonServices.dart';
......@@ -33,6 +34,7 @@ Future runErpScreenApp() async {
class WebErpScreen extends StatefulWidget {
final String erp_url;
const WebErpScreen({super.key, required this.erp_url});
@override
......@@ -40,6 +42,10 @@ class WebErpScreen extends StatefulWidget {
}
class _WebErpScreenState extends State<WebErpScreen> {
Map _source = {ConnectivityResult.mobile: true};
final MyConnectivity _connectivity = MyConnectivity.instance;
final Completer<InAppWebViewController> _controller =
Completer<InAppWebViewController>();
var empId = "";
......@@ -62,6 +68,10 @@ class _WebErpScreenState extends State<WebErpScreen> {
void initState() {
// loadData();
super.initState();
_connectivity.initialise();
_connectivity.myStream.listen((source) {
setState(() => _source = source);
});
pullToRefreshController =
kIsWeb
? null
......@@ -107,10 +117,22 @@ class _WebErpScreenState extends State<WebErpScreen> {
@override
void dispose() {
super.dispose();
_connectivity.disposeStream();
}
@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 WillPopScope(
onWillPop: () async {
if (await _webViewController!.canGoBack()) {
......@@ -119,7 +141,7 @@ class _WebErpScreenState extends State<WebErpScreen> {
}
return true; // Allow default back button behavior
},
child: SafeArea(
child: connection=="Online"?SafeArea(
top: false,
bottom: Platform.isIOS?false:true,
child: Scaffold(
......@@ -502,7 +524,7 @@ class _WebErpScreenState extends State<WebErpScreen> {
),
),
),
),
):NoNetwork(context),
);
}
// Future<void> saveBase64File(String base64Data, String filename, String mimeType) async {
......
import 'dart:io';
import 'package:connectivity_plus/connectivity_plus.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_svg/svg.dart';
......@@ -9,6 +10,7 @@ import 'package:provider/provider.dart';
import 'package:generp/screens/screensExports.dart';
import '../../Notifiers/crmProvider/crmDashboardProvider.dart';
import '../../Utils/app_colors.dart';
import '../../Utils/commonServices.dart';
import '../../Utils/commonWidgets.dart';
class CrmdashboardScreen extends StatefulWidget {
......@@ -20,10 +22,16 @@ class CrmdashboardScreen extends StatefulWidget {
class _CrmdashboardScreenState extends State<CrmdashboardScreen> {
FocusNode focusNode = FocusNode();
Map _source = {ConnectivityResult.mobile: true};
final MyConnectivity _connectivity = MyConnectivity.instance;
@override
void initState() {
super.initState();
_connectivity.initialise();
_connectivity.myStream.listen((event) {
setState(() => _source = event);
});
WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
var prov = Provider.of<Crmdashboardprovider>(context, listen: false);
prov.accessPagesAPIFunction(context);
......@@ -31,15 +39,37 @@ class _CrmdashboardScreenState extends State<CrmdashboardScreen> {
prov.crmPendingTasksAPIFunction(context);
});
}
@override
void dispose() {
// TODO: implement dispose
super.dispose();
_connectivity.disposeStream();
}
@override
Widget build(BuildContext context) {
return Platform.isAndroid
? WillPopScope(
onWillPop: () => onBackPressed(context),
child: SafeArea(top: false, bottom: true, child: _scaffold(context)),
)
: _scaffold(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")
? Platform.isAndroid
? WillPopScope(
onWillPop: () => onBackPressed(context),
child: SafeArea(
top: false,
bottom: true,
child: _scaffold(context),
),
)
: _scaffold(context)
: NoNetwork(context);
}
Widget _scaffold(BuildContext context) {
......
import 'dart:io';
import 'package:connectivity_plus/connectivity_plus.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
......@@ -10,6 +11,7 @@ import 'package:generp/Utils/commonWidgets.dart';
import 'package:generp/screens/finance/FileViewer.dart';
import 'package:provider/provider.dart';
import '../../Utils/commonServices.dart';
import '../commonDateRangeFilter.dart';
import 'PaymentRequestionListDetails.dart';
......@@ -30,11 +32,19 @@ class Allpaymentrequesitionlistsbymodes extends StatefulWidget {
class _AllpaymentrequesitionlistsbymodesState
extends State<Allpaymentrequesitionlistsbymodes> {
late Commondaterangefilter cf;
Map _source = {ConnectivityResult.mobile: true};
final MyConnectivity _connectivity = MyConnectivity.instance;
late Commondaterangefilter cf;
@override
void initState() {
// TODO: implement initState
super.initState();
_connectivity.initialise();
_connectivity.myStream.listen((source) {
setState(() => _source = source);
});
WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
cf = Commondaterangefilter();
var provider = Provider.of<Requestionlistprovider>(
......@@ -52,9 +62,27 @@ class _AllpaymentrequesitionlistsbymodesState
});
}
@override
void dispose() {
// TODO: implement dispose
super.dispose();
_connectivity.disposeStream();
}
@override
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) {
final requestLists = provider.requisitionList;
return WillPopScope(
......@@ -383,7 +411,7 @@ class _AllpaymentrequesitionlistsbymodesState
),
);
},
);
):NoNetwork(context);
}
Future<void> _showOptionsSheet(BuildContext context) {
......
import 'dart:io';
import 'package:connectivity_plus/connectivity_plus.dart';
import 'package:dropdown_button2/dropdown_button2.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
......@@ -12,6 +13,7 @@ import 'package:generp/screens/commom/accountsListDetails.dart';
import 'package:intl/intl.dart';
import 'package:provider/provider.dart';
import '../../Utils/commonServices.dart';
import 'FileViewer.dart';
class Paymentrequestionlistdetails extends StatefulWidget {
......@@ -33,6 +35,11 @@ class Paymentrequestionlistdetails extends StatefulWidget {
class _PaymentrequestionlistdetailsState
extends State<Paymentrequestionlistdetails> {
Map _source = {ConnectivityResult.mobile: true};
final MyConnectivity _connectivity = MyConnectivity.instance;
List<FocusNode> focusNodes = List.generate(10, (index) => FocusNode(),);
Dropdowntheme ddtheme = Dropdowntheme();
TextEditingController approvedAmount = TextEditingController();
......@@ -63,6 +70,10 @@ class _PaymentrequestionlistdetailsState
void initState() {
// TODO: implement initState
super.initState();
_connectivity.initialise();
_connectivity.myStream.listen((source) {
setState(() => _source = source);
});
WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
var provider = Provider.of<Requesitionlidtdetailsprovider>(
context,
......@@ -77,12 +88,24 @@ class _PaymentrequestionlistdetailsState
void dispose() {
// TODO: implement dispose
focusNodes.map((e)=>e.dispose());
_connectivity.disposeStream();
super.dispose();
}
@override
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) {
var req_det = provider.requestsDetails;
isLevel1Finalized = [
......@@ -574,7 +597,7 @@ class _PaymentrequestionlistdetailsState
},
);
},
);
):NoNetwork(context);
}
Future<void> _showLevelApprovalSheet(BuildContext context, paymentID) {
......
import 'dart:io';
import 'package:connectivity_plus/connectivity_plus.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter/cupertino.dart';
......@@ -10,6 +11,7 @@ import 'package:generp/Utils/dropdownTheme.dart';
import 'package:provider/provider.dart';
import '../../Notifiers/financeProvider/paymentReceiptsProvider.dart';
import '../../Utils/app_colors.dart';
import '../../Utils/commonServices.dart';
import '../../Utils/commonWidgets.dart';
class Addpaymentreceiptlist extends StatefulWidget {
......@@ -23,10 +25,18 @@ class Addpaymentreceiptlist extends StatefulWidget {
class _AddpaymentreceiptlistState extends State<Addpaymentreceiptlist> {
Dropdowntheme ddtheme = Dropdowntheme();
List<FocusNode> focusNodes = List.generate(12, (index) => FocusNode());
Map _source = {ConnectivityResult.mobile: true};
final MyConnectivity _connectivity = MyConnectivity.instance;
@override
void initState() {
// TODO: implement initState
super.initState();
_connectivity.initialise();
_connectivity.myStream.listen((source) {
setState(() => _source = source);
});
WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
var provider = Provider.of<Paymentreceiptsprovider>(
context,
......@@ -39,6 +49,7 @@ class _AddpaymentreceiptlistState extends State<Addpaymentreceiptlist> {
@override
void dispose() {
focusNodes.map((e) => e.dispose());
_connectivity.disposeStream();
super.dispose();
}
......@@ -49,7 +60,18 @@ class _AddpaymentreceiptlistState extends State<Addpaymentreceiptlist> {
@override
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) {
return WillPopScope(
child: SafeArea(
......@@ -651,7 +673,7 @@ class _AddpaymentreceiptlistState extends State<Addpaymentreceiptlist> {
},
);
},
);
):NoNetwork(context);
}
// void _showDialog(Widget child) {
......
import 'dart:io';
import 'package:connectivity_plus/connectivity_plus.dart';
import 'package:dropdown_button2/dropdown_button2.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
......@@ -13,6 +14,7 @@ import 'package:intl/intl.dart';
import 'package:provider/provider.dart';
import '../../Models/financeModels/addDirectPaymentResponse.dart';
import '../../Utils/commonServices.dart';
class Directpaymentrequesitionlist extends StatefulWidget {
final String pageTitleName;
......@@ -29,10 +31,17 @@ class _DirectpaymentrequesitionlistState
Dropdowntheme ddtheme = Dropdowntheme();
List<FocusNode> focusNodes = List.generate(12, (index) => FocusNode());
Map _source = {ConnectivityResult.mobile: true};
final MyConnectivity _connectivity = MyConnectivity.instance;
@override
void initState() {
// TODO: implement initState
super.initState();
_connectivity.initialise();
_connectivity.myStream.listen((source) {
setState(() => _source = source);
});
WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
var provider = Provider.of<Requestionlistprovider>(
context,
......@@ -45,6 +54,7 @@ class _DirectpaymentrequesitionlistState
@override
void dispose() {
focusNodes.map((e) => e.dispose());
_connectivity.disposeStream();
super.dispose();
}
......@@ -55,7 +65,18 @@ class _DirectpaymentrequesitionlistState
@override
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) {
return WillPopScope(
child: SafeArea(
......@@ -653,7 +674,7 @@ class _DirectpaymentrequesitionlistState
},
);
},
);
):NoNetwork(context);
}
// void _showDialog(Widget child) {
......
import 'dart:io';
import 'package:connectivity_plus/connectivity_plus.dart';
import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart';
import 'package:generp/Notifiers/financeProvider/DashboardProvider.dart';
......@@ -8,6 +9,8 @@ import 'package:generp/Utils/commonWidgets.dart';
import 'package:generp/screens/screensExports.dart';
import 'package:provider/provider.dart';
import '../../Utils/commonServices.dart';
class Financedashboard extends StatefulWidget {
const Financedashboard({super.key});
......@@ -16,25 +19,56 @@ class Financedashboard extends StatefulWidget {
}
class _FinancedashboardState extends State<Financedashboard> {
Map _source = {ConnectivityResult.mobile: true};
final MyConnectivity _connectivity = MyConnectivity.instance;
@override
void initState() {
// TODO: implement initState
super.initState();
_connectivity.initialise();
_connectivity.myStream.listen((source) {
setState(() => _source = source);
});
WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
var provider = Provider.of<Dashboardprovider>(context, listen: false);
provider.DashboardPagesAPIFunction(context);
provider.addFormfinanceFormAccessPagesAPIFunction(context);
});
}
@override
void dispose() {
// TODO: implement dispose
super.dispose();
_connectivity.disposeStream();
}
@override
Widget build(BuildContext context) {
return Platform.isAndroid
? WillPopScope(
onWillPop: () => onBackPressed(context),
child: SafeArea(top: false, bottom: true, child: _scaffold(context)),
)
: _scaffold(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")
? Platform.isAndroid
? WillPopScope(
onWillPop: () => onBackPressed(context),
child: SafeArea(
top: false,
bottom: true,
child: _scaffold(context),
),
)
: _scaffold(context)
: NoNetwork(context);
}
Widget _scaffold(BuildContext context) {
......
import 'dart:io';
import 'package:connectivity_plus/connectivity_plus.dart';
import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart';
import 'package:generp/Utils/app_colors.dart';
......@@ -7,6 +8,7 @@ import 'package:generp/Utils/commonWidgets.dart';
import 'package:provider/provider.dart';
import '../../Notifiers/financeProvider/paymentRequisitionPaymentsListProvider.dart';
import '../../Utils/commonServices.dart';
import 'FileViewer.dart';
class Paymentdetailspaymentrequisition extends StatefulWidget {
......@@ -28,10 +30,17 @@ class _PaymentdetailspaymentrequisitionState
extends State<Paymentdetailspaymentrequisition> {
Map _source = {ConnectivityResult.mobile: true};
final MyConnectivity _connectivity = MyConnectivity.instance;
@override
void initState() {
// TODO: implement initState
super.initState();
_connectivity.initialise();
_connectivity.myStream.listen((source) {
setState(() => _source = source);
});
WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
var provider = Provider.of<Paymentrequisitionpaymentslistprovider>(
context,
......@@ -41,9 +50,27 @@ class _PaymentdetailspaymentrequisitionState
});
}
@override
void dispose() {
// TODO: implement dispose
super.dispose();
_connectivity.disposeStream();
}
@override
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) {
var payment_det = provider.paymentDetails;
......@@ -213,7 +240,7 @@ class _PaymentdetailspaymentrequisitionState
},
);
},
);
):NoNetwork(context);
}
}
import 'dart:io';
import 'package:connectivity_plus/connectivity_plus.dart';
import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart';
import 'package:generp/Utils/app_colors.dart';
import 'package:generp/Utils/commonWidgets.dart';
import 'package:provider/provider.dart';
import '../../Notifiers/financeProvider/paymentReceiptsProvider.dart';
import '../../Utils/commonServices.dart';
import 'FileViewer.dart';
class Paymentreceiptdetails extends StatefulWidget {
......@@ -26,11 +28,18 @@ class Paymentreceiptdetails extends StatefulWidget {
class _PaymentreceiptdetailsState
extends State<Paymentreceiptdetails> {
Map _source = {ConnectivityResult.mobile: true};
final MyConnectivity _connectivity = MyConnectivity.instance;
@override
void initState() {
// TODO: implement initState
super.initState();
_connectivity.initialise();
_connectivity.myStream.listen((source) {
setState(() => _source = source);
});
WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
var provider = Provider.of<Paymentreceiptsprovider>(
context,
......@@ -39,10 +48,28 @@ class _PaymentreceiptdetailsState
provider.paymentsListDetailsAPI(context, widget.paymentRequestId);
});
}
@override
void dispose() {
// TODO: implement dispose
super.dispose();
_connectivity.disposeStream();
}
@override
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) {
var payment_det = provider.receiptDetails;
......@@ -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