Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
Sai Srinivas
GEN_ERP_2025
Commits
ee178d55
Commit
ee178d55
authored
Jul 09, 2025
by
Sai Srinivas
Browse files
09-07-2025 By Sai Srinivas
Network and Finance Module issue and Back
parent
2ade5aad
Changes
44
Show whitespace changes
Inline
Side-by-side
lib/Notifiers/PaymentDetailsProvider.dart
View file @
ee178d55
...
@@ -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
,
name
Controller
.
text
,
designation
,
designation
Controller
.
text
,
mob
ile
,
mob
Controller
.
text
,
altMob
ile
,
altMob
Controller
.
text
,
tel
ephone
,
tel
Controller
.
text
,
email
,
email
Controller
.
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
;
}
}
}
lib/Utils/GlobalConstants.dart
View file @
ee178d55
String
didPushed
=
""
;
String
didPushed
=
""
;
String
didPopped
=
""
;
String
didPopped
=
""
;
var
connection
;
lib/Utils/commonServices.dart
View file @
ee178d55
...
@@ -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
ConnectivityResul
t
);
_checkStatus
(
result
.
firs
t
);
});
});
}
}
...
...
lib/Utils/commonWidgets.dart
View file @
ee178d55
...
@@ -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
,
o
verf
lo
w
:
TextOverflow
.
ellipsis
,
c
olo
r
:
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
(
...
...
lib/screens/AttendanceScreen.dart
View file @
ee178d55
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
)
{
...
...
lib/screens/CheckInScreen.dart
View file @
ee178d55
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
);
}
}
}
}
...
...
lib/screens/HomeScreen.dart
View file @
ee178d55
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/material.dart'
;
import
'package:flutter/material.dart'
;
import
'package:flutter/services.dart'
;
import
'package:flutter/services.dart'
;
import
'package:flutter_svg/flutter_svg.dart'
;
import
'package:flutter_svg/flutter_svg.dart'
;
import
'package:generp/Utils/commonWidgets.dart'
;
import
'../Utils/commonServices.dart'
;
import
'notifierExports.dart'
;
import
'notifierExports.dart'
;
import
'screensExports.dart'
;
import
'screensExports.dart'
;
import
'package:geolocator/geolocator.dart'
;
import
'package:geolocator/geolocator.dart'
;
...
@@ -24,10 +27,17 @@ class MyHomePage extends StatefulWidget {
...
@@ -24,10 +27,17 @@ class MyHomePage extends StatefulWidget {
class
_MyHomePageState
extends
State
<
MyHomePage
>
{
class
_MyHomePageState
extends
State
<
MyHomePage
>
{
Timer
?
timer
;
Timer
?
timer
;
Map
_source
=
{
ConnectivityResult
.
mobile
:
true
};
final
MyConnectivity
_connectivity
=
MyConnectivity
.
instance
;
@override
@override
void
initState
()
{
void
initState
()
{
// TODO: implement initState
// TODO: implement initState
_connectivity
.
initialise
();
_connectivity
.
myStream
.
listen
((
source
)
{
setState
(()
=>
_source
=
source
);
});
var
prov
=
Provider
.
of
<
HomescreenNotifier
>(
context
,
listen:
false
);
var
prov
=
Provider
.
of
<
HomescreenNotifier
>(
context
,
listen:
false
);
var
prof_prov
=
Provider
.
of
<
ProfileNotifer
>(
context
,
listen:
false
);
var
prof_prov
=
Provider
.
of
<
ProfileNotifer
>(
context
,
listen:
false
);
Future
.
microtask
(()
{
Future
.
microtask
(()
{
...
@@ -104,9 +114,28 @@ class _MyHomePageState extends State<MyHomePage> {
...
@@ -104,9 +114,28 @@ class _MyHomePageState extends State<MyHomePage> {
}
}
}
}
@override
void
dispose
()
{
// TODO: implement dispose
super
.
dispose
();
_connectivity
.
disposeStream
();
}
@override
@override
Widget
build
(
BuildContext
context
)
{
Widget
build
(
BuildContext
context
)
{
return
Consumer2
<
HomescreenNotifier
,
ProfileNotifer
>(
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'
)
?
Consumer2
<
HomescreenNotifier
,
ProfileNotifer
>(
builder:
(
context
,
homescreen
,
profile
,
child
)
{
builder:
(
context
,
homescreen
,
profile
,
child
)
{
// Define the original data
// Define the original data
final
names
=
[
final
names
=
[
...
@@ -216,11 +245,11 @@ class _MyHomePageState extends State<MyHomePage> {
...
@@ -216,11 +245,11 @@ class _MyHomePageState extends State<MyHomePage> {
width:
66
,
width:
66
,
height:
66
,
height:
66
,
child:
ClipRRect
(
child:
ClipRRect
(
borderRadius:
BorderRadius
.
circular
(
borderRadius:
50
,
BorderRadius
.
circular
(
50
),
),
child:
CachedNetworkImage
(
child:
CachedNetworkImage
(
cacheKey:
profile
.
profileImage
,
cacheKey:
profile
.
profileImage
,
fit:
BoxFit
.
cover
,
fit:
BoxFit
.
cover
,
imageUrl:
imageUrl:
"
${profile.profileImage}
"
,
"
${profile.profileImage}
"
,
...
@@ -326,7 +355,9 @@ class _MyHomePageState extends State<MyHomePage> {
...
@@ -326,7 +355,9 @@ class _MyHomePageState extends State<MyHomePage> {
),
),
InkResponse
(
InkResponse
(
onTap:
()
{
onTap:
()
{
_showProfileBottomSheet
(
context
);
_showProfileBottomSheet
(
context
,
);
},
},
child:
Row
(
child:
Row
(
mainAxisAlignment:
mainAxisAlignment:
...
@@ -338,7 +369,8 @@ class _MyHomePageState extends State<MyHomePage> {
...
@@ -338,7 +369,8 @@ class _MyHomePageState extends State<MyHomePage> {
"View Profile"
,
"View Profile"
,
style:
TextStyle
(
style:
TextStyle
(
color:
AppColors
.
app_blue
,
color:
AppColors
.
app_blue
,
fontFamily:
"JakartaRegular"
,
fontFamily:
"JakartaRegular"
,
fontSize:
14
,
fontSize:
14
,
),
),
),
),
...
@@ -393,7 +425,8 @@ class _MyHomePageState extends State<MyHomePage> {
...
@@ -393,7 +425,8 @@ class _MyHomePageState extends State<MyHomePage> {
context
,
context
,
MaterialPageRoute
(
MaterialPageRoute
(
builder:
builder:
(
context
)
=>
AttendanceScreen
(),
(
context
)
=>
AttendanceScreen
(),
settings:
RouteSettings
(
settings:
RouteSettings
(
arguments:
'AttendanceScreen'
,
arguments:
'AttendanceScreen'
,
),
),
...
@@ -411,7 +444,8 @@ class _MyHomePageState extends State<MyHomePage> {
...
@@ -411,7 +444,8 @@ class _MyHomePageState extends State<MyHomePage> {
builder:
builder:
(
context
)
=>
WebErpScreen
(
(
context
)
=>
WebErpScreen
(
erp_url:
erp_url:
homescreen
.
webPageUrl
,
homescreen
.
webPageUrl
,
),
),
),
),
);
);
...
@@ -421,7 +455,9 @@ class _MyHomePageState extends State<MyHomePage> {
...
@@ -421,7 +455,9 @@ class _MyHomePageState extends State<MyHomePage> {
MaterialPageRoute
(
MaterialPageRoute
(
builder:
builder:
(
context
)
=>
WebERPIOS
(
(
context
)
=>
WebERPIOS
(
url:
homescreen
.
webPageUrl
,
url:
homescreen
.
webPageUrl
,
),
),
),
),
);
);
...
@@ -439,7 +475,8 @@ class _MyHomePageState extends State<MyHomePage> {
...
@@ -439,7 +475,8 @@ class _MyHomePageState extends State<MyHomePage> {
(
context
)
=>
(
context
)
=>
Gentrackerdashboard
(),
Gentrackerdashboard
(),
settings:
RouteSettings
(
settings:
RouteSettings
(
arguments:
'Gentrackerdashboard'
,
arguments:
'Gentrackerdashboard'
,
),
),
),
),
);
);
...
@@ -459,7 +496,8 @@ class _MyHomePageState extends State<MyHomePage> {
...
@@ -459,7 +496,8 @@ class _MyHomePageState extends State<MyHomePage> {
context
,
context
,
MaterialPageRoute
(
MaterialPageRoute
(
builder:
builder:
(
context
)
=>
Nearbygenerators
(),
(
context
)
=>
Nearbygenerators
(),
),
),
);
);
...
@@ -469,7 +507,8 @@ class _MyHomePageState extends State<MyHomePage> {
...
@@ -469,7 +507,8 @@ class _MyHomePageState extends State<MyHomePage> {
context
,
context
,
MaterialPageRoute
(
MaterialPageRoute
(
builder:
builder:
(
context
)
=>
InventoryScreen
(),
(
context
)
=>
InventoryScreen
(),
),
),
);
);
break
;
break
;
...
@@ -481,7 +520,9 @@ class _MyHomePageState extends State<MyHomePage> {
...
@@ -481,7 +520,9 @@ class _MyHomePageState extends State<MyHomePage> {
context
,
context
,
MaterialPageRoute
(
MaterialPageRoute
(
builder:
builder:
(
context
)
=>
WebWhizzdomScreen
(
(
context
,
)
=>
WebWhizzdomScreen
(
whizzdom_url:
whizzdom_url:
homescreen
homescreen
.
whizzdomPageUrl
,
.
whizzdomPageUrl
,
...
@@ -497,7 +538,8 @@ class _MyHomePageState extends State<MyHomePage> {
...
@@ -497,7 +538,8 @@ class _MyHomePageState extends State<MyHomePage> {
context
,
context
,
MaterialPageRoute
(
MaterialPageRoute
(
builder:
builder:
(
context
)
=>
Commondashboard
(),
(
context
)
=>
Commondashboard
(),
),
),
);
);
break
;
break
;
...
@@ -506,7 +548,8 @@ class _MyHomePageState extends State<MyHomePage> {
...
@@ -506,7 +548,8 @@ class _MyHomePageState extends State<MyHomePage> {
context
,
context
,
MaterialPageRoute
(
MaterialPageRoute
(
builder:
builder:
(
context
)
=>
Financedashboard
(),
(
context
)
=>
Financedashboard
(),
settings:
RouteSettings
(
settings:
RouteSettings
(
arguments:
'Financedashboard'
,
arguments:
'Financedashboard'
,
),
),
...
@@ -527,7 +570,8 @@ class _MyHomePageState extends State<MyHomePage> {
...
@@ -527,7 +570,8 @@ class _MyHomePageState extends State<MyHomePage> {
context
,
context
,
MaterialPageRoute
(
MaterialPageRoute
(
builder:
builder:
(
context
)
=>
CrmdashboardScreen
(),
(
context
)
=>
CrmdashboardScreen
(),
settings:
RouteSettings
(
settings:
RouteSettings
(
name:
'CrmdashboardScreen'
,
name:
'CrmdashboardScreen'
,
),
),
...
@@ -538,7 +582,9 @@ class _MyHomePageState extends State<MyHomePage> {
...
@@ -538,7 +582,9 @@ class _MyHomePageState extends State<MyHomePage> {
break
;
break
;
}
}
if
(
res
==
true
)
{
if
(
res
==
true
)
{
homescreen
.
DashboardApiFunction
(
context
);
homescreen
.
DashboardApiFunction
(
context
,
);
}
}
},
},
child:
Container
(
child:
Container
(
...
@@ -549,7 +595,8 @@ class _MyHomePageState extends State<MyHomePage> {
...
@@ -549,7 +595,8 @@ class _MyHomePageState extends State<MyHomePage> {
child:
Column
(
child:
Column
(
crossAxisAlignment:
crossAxisAlignment:
CrossAxisAlignment
.
center
,
CrossAxisAlignment
.
center
,
mainAxisAlignment:
MainAxisAlignment
.
center
,
mainAxisAlignment:
MainAxisAlignment
.
center
,
children:
[
children:
[
SvgPicture
.
asset
(
SvgPicture
.
asset
(
item
[
'icon'
]!,
item
[
'icon'
]!,
...
@@ -573,7 +620,8 @@ class _MyHomePageState extends State<MyHomePage> {
...
@@ -573,7 +620,8 @@ class _MyHomePageState extends State<MyHomePage> {
),
),
);
);
},
},
);
)
:
NoNetwork
(
context
);
}
}
Future
<
void
>
_showProfileBottomSheet
(
BuildContext
context
)
{
Future
<
void
>
_showProfileBottomSheet
(
BuildContext
context
)
{
...
...
lib/screens/ScannerLogin.dart
View file @
ee178d55
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,15 +18,49 @@ class Scannerlogin extends StatefulWidget {
...
@@ -16,15 +18,49 @@ 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
void
initState
()
{
// TODO: implement initState
_connectivity
.
initialise
();
_connectivity
.
myStream
.
listen
((
source
)
{
setState
(()
=>
_source
=
source
);
});
super
.
initState
();
}
@override
void
dispose
()
{
// TODO: implement dispose
super
.
dispose
();
_connectivity
.
disposeStream
();
}
@override
@override
Widget
build
(
BuildContext
context
)
{
Widget
build
(
BuildContext
context
)
{
return
Consumer
<
Scanloginprovider
>(
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
)
{
builder:
(
context
,
provider
,
child
)
{
return
WillPopScope
(
return
WillPopScope
(
onWillPop:
()
=>
onBackPressed
(
context
),
onWillPop:
()
=>
onBackPressed
(
context
),
child:
SafeArea
(
child:
SafeArea
(
top:
false
,
top:
false
,
bottom:
Platform
.
isIOS
?
false
:
true
,
bottom:
Platform
.
isIOS
?
false
:
true
,
child:
Scaffold
(
child:
Scaffold
(
resizeToAvoidBottomInset:
true
,
resizeToAvoidBottomInset:
true
,
backgroundColor:
AppColors
.
scaffold_bg_color
,
backgroundColor:
AppColors
.
scaffold_bg_color
,
...
@@ -38,7 +74,6 @@ class _ScannerloginState extends State<Scannerlogin> {
...
@@ -38,7 +74,6 @@ class _ScannerloginState extends State<Scannerlogin> {
height:
250
,
height:
250
,
child:
QRView
(
child:
QRView
(
key:
provider
.
scannerKey
,
key:
provider
.
scannerKey
,
onQRViewCreated:
(
p0
)
{
onQRViewCreated:
(
p0
)
{
provider
.
onQRViewCreated
(
p0
,
context
);
provider
.
onQRViewCreated
(
p0
,
context
);
...
@@ -47,7 +82,6 @@ class _ScannerloginState extends State<Scannerlogin> {
...
@@ -47,7 +82,6 @@ class _ScannerloginState extends State<Scannerlogin> {
cameraFacing:
CameraFacing
.
back
,
cameraFacing:
CameraFacing
.
back
,
overlay:
QrScannerOverlayShape
(
overlay:
QrScannerOverlayShape
(
borderColor:
AppColors
.
app_blue
,
borderColor:
AppColors
.
app_blue
,
borderRadius:
20
,
borderRadius:
20
,
borderLength:
60
,
borderLength:
60
,
...
@@ -77,6 +111,7 @@ class _ScannerloginState extends State<Scannerlogin> {
...
@@ -77,6 +111,7 @@ class _ScannerloginState extends State<Scannerlogin> {
),
),
);
);
},
},
);
)
:
NoNetwork
(
context
);
}
}
}
}
lib/screens/WebERPIOS.dart
View file @
ee178d55
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
)
{
...
...
lib/screens/WebERPScreen.dart
View file @
ee178d55
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 {
...
...
lib/screens/crm/crmDashboard.dart
View file @
ee178d55
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
])
{
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
)
{
...
...
lib/screens/finance/AllPaymentRequesitionListsByModes.dart
View file @
ee178d55
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
>
{
Map
_source
=
{
ConnectivityResult
.
mobile
:
true
};
final
MyConnectivity
_connectivity
=
MyConnectivity
.
instance
;
late
Commondaterangefilter
cf
;
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
)
{
...
...
lib/screens/finance/PaymentRequestionListDetails.dart
View file @
ee178d55
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
)
{
...
...
lib/screens/finance/addPaymentReceiptList.dart
View file @
ee178d55
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) {
...
...
lib/screens/finance/directPaymentRequesitionList.dart
View file @
ee178d55
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) {
...
...
lib/screens/finance/financeDashboard.dart
View file @
ee178d55
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
])
{
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
)
{
...
...
lib/screens/finance/paymentDetailsPaymentRequisition.dart
View file @
ee178d55
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
);
}
}
}
}
lib/screens/finance/paymentListPaymentRequisition.dart
View file @
ee178d55
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_svg/svg.dart'
;
import
'package:flutter_svg/svg.dart'
;
...
@@ -7,24 +8,36 @@ import 'package:generp/screens/finance/paymentDetailsPaymentRequisition.dart';
...
@@ -7,24 +8,36 @@ import 'package:generp/screens/finance/paymentDetailsPaymentRequisition.dart';
import
'package:provider/provider.dart'
;
import
'package:provider/provider.dart'
;
import
'../../Notifiers/financeProvider/paymentRequisitionPaymentsListProvider.dart'
;
import
'../../Notifiers/financeProvider/paymentRequisitionPaymentsListProvider.dart'
;
import
'../../Utils/app_colors.dart'
;
import
'../../Utils/app_colors.dart'
;
import
'../../Utils/commonServices.dart'
;
import
'../../Utils/commonWidgets.dart'
;
import
'../../Utils/commonWidgets.dart'
;
import
'../commonDateRangeFilter.dart'
;
import
'../commonDateRangeFilter.dart'
;
import
'FileViewer.dart'
;
import
'FileViewer.dart'
;
class
Paymentlistpaymentrequisition
extends
StatefulWidget
{
class
Paymentlistpaymentrequisition
extends
StatefulWidget
{
final
String
pageTitleName
;
final
String
pageTitleName
;
const
Paymentlistpaymentrequisition
({
super
.
key
,
required
this
.
pageTitleName
});
const
Paymentlistpaymentrequisition
({
super
.
key
,
required
this
.
pageTitleName
});
@override
@override
State
<
Paymentlistpaymentrequisition
>
createState
()
=>
_PaymentlistpaymentrequisitionState
();
State
<
Paymentlistpaymentrequisition
>
createState
()
=>
_PaymentlistpaymentrequisitionState
();
}
}
class
_PaymentlistpaymentrequisitionState
extends
State
<
Paymentlistpaymentrequisition
>
{
class
_PaymentlistpaymentrequisitionState
late
Commondaterangefilter
cf
;
extends
State
<
Paymentlistpaymentrequisition
>
{
late
Commondaterangefilter
cf
;
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
)
{
cf
=
Commondaterangefilter
();
cf
=
Commondaterangefilter
();
var
provider
=
Provider
.
of
<
Paymentrequisitionpaymentslistprovider
>(
var
provider
=
Provider
.
of
<
Paymentrequisitionpaymentslistprovider
>(
...
@@ -37,13 +50,32 @@ late Commondaterangefilter cf;
...
@@ -37,13 +50,32 @@ late Commondaterangefilter cf;
end:
DateTime
(
now
.
year
,
now
.
month
,
now
.
day
),
end:
DateTime
(
now
.
year
,
now
.
month
,
now
.
day
),
);
);
final
dateRange
=
cf
.
getFormattedDateRange
(
range
);
final
dateRange
=
cf
.
getFormattedDateRange
(
range
);
provider
.
paymentsListAPI
(
context
,
''
,
''
);
provider
.
paymentsListAPI
(
context
,
''
,
''
);
});
});
}
}
@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
)
{
final
requestLists
=
provider
.
paymentsList
;
final
requestLists
=
provider
.
paymentsList
;
return
WillPopScope
(
return
WillPopScope
(
...
@@ -52,7 +84,7 @@ late Commondaterangefilter cf;
...
@@ -52,7 +84,7 @@ late Commondaterangefilter cf;
},
},
child:
SafeArea
(
child:
SafeArea
(
top:
false
,
top:
false
,
bottom:
Platform
.
isIOS
?
false
:
true
,
bottom:
Platform
.
isIOS
?
false
:
true
,
child:
Scaffold
(
child:
Scaffold
(
resizeToAvoidBottomInset:
true
,
resizeToAvoidBottomInset:
true
,
appBar:
appbar2
(
appBar:
appbar2
(
...
@@ -70,12 +102,16 @@ late Commondaterangefilter cf;
...
@@ -70,12 +102,16 @@ late Commondaterangefilter cf;
InkResponse
(
InkResponse
(
onTap:
()
async
{
onTap:
()
async
{
var
cf
=
Commondaterangefilter
();
var
cf
=
Commondaterangefilter
();
var
result
=
await
cf
.
showFilterBottomSheet
(
context
);
var
result
=
await
cf
.
showFilterBottomSheet
(
context
,
);
if
(
result
!=
null
)
{
if
(
result
!=
null
)
{
var
dateRange
=
result
[
'dateRange'
]
as
DateTimeRange
?;
var
dateRange
=
result
[
'dateRange'
]
as
DateTimeRange
?;
print
(
"dateRange:
$dateRange
"
);
print
(
"dateRange:
$dateRange
"
);
var
formatted
=
result
[
'formatted'
]
as
List
<
String
>;
var
formatted
=
result
[
'formatted'
]
as
List
<
String
>;
print
(
"formatted:
$formatted
"
);
print
(
"formatted:
$formatted
"
);
if
(
formatted
.
isNotEmpty
)
{
if
(
formatted
.
isNotEmpty
)
{
...
@@ -83,7 +119,11 @@ late Commondaterangefilter cf;
...
@@ -83,7 +119,11 @@ late Commondaterangefilter cf;
var
toDate
=
formatted
[
1
];
// To date
var
toDate
=
formatted
[
1
];
// To date
print
(
"from_date:
$fromDate
"
);
print
(
"from_date:
$fromDate
"
);
print
(
"to_date:
$toDate
"
);
print
(
"to_date:
$toDate
"
);
provider
.
paymentsListAPI
(
context
,
fromDate
,
toDate
);
provider
.
paymentsListAPI
(
context
,
fromDate
,
toDate
,
);
// You can now use fromDate and toDate as needed
// You can now use fromDate and toDate as needed
// For example, store them or pass to another function
// For example, store them or pass to another function
}
else
{
}
else
{
...
@@ -93,18 +133,26 @@ late Commondaterangefilter cf;
...
@@ -93,18 +133,26 @@ late Commondaterangefilter cf;
print
(
"Bottom sheet closed without selection"
);
print
(
"Bottom sheet closed without selection"
);
}
}
},
},
child:
SvgPicture
.
asset
(
"assets/svg/filter_ic.svg"
,
height:
25
,),
child:
SvgPicture
.
asset
(
"assets/svg/filter_ic.svg"
,
height:
25
,
),
),
),
],
],
),
),
),
),
backgroundColor:
AppColors
.
scaffold_bg_color
,
backgroundColor:
AppColors
.
scaffold_bg_color
,
body:
provider
.
isLoading
body:
?
Center
(
child:
CircularProgressIndicator
.
adaptive
(
provider
.
isLoading
?
Center
(
child:
CircularProgressIndicator
.
adaptive
(
valueColor:
AlwaysStoppedAnimation
<
Color
>(
valueColor:
AlwaysStoppedAnimation
<
Color
>(
AppColors
.
app_blue
)
AppColors
.
app_blue
,
))
),
:
requestLists
.
isNotEmpty
?
SizedBox
(
),
)
:
requestLists
.
isNotEmpty
?
SizedBox
(
child:
Scrollbar
(
child:
Scrollbar
(
thumbVisibility:
false
,
thumbVisibility:
false
,
...
@@ -138,7 +186,8 @@ late Commondaterangefilter cf;
...
@@ -138,7 +186,8 @@ late Commondaterangefilter cf;
padding:
EdgeInsets
.
all
(
8.0
),
padding:
EdgeInsets
.
all
(
8.0
),
decoration:
BoxDecoration
(
decoration:
BoxDecoration
(
color:
Color
(
0xFFFFF3CE
),
color:
Color
(
0xFFFFF3CE
),
borderRadius:
BorderRadius
.
circular
(
8
),
borderRadius:
BorderRadius
.
circular
(
8
),
),
),
child:
SvgPicture
.
asset
(
child:
SvgPicture
.
asset
(
"assets/svg/fin_ic.svg"
,
"assets/svg/fin_ic.svg"
,
...
@@ -154,19 +203,25 @@ late Commondaterangefilter cf;
...
@@ -154,19 +203,25 @@ late Commondaterangefilter cf;
CrossAxisAlignment
.
start
,
CrossAxisAlignment
.
start
,
children:
[
children:
[
Text
(
Text
(
requestLists
[
index
].
receipientAccount
!,
requestLists
[
index
]
.
receipientAccount
!,
style:
TextStyle
(
style:
TextStyle
(
fontFamily:
"JakartaMedium"
,
fontFamily:
"JakartaMedium"
,
fontSize:
14
,
fontSize:
14
,
color:
AppColors
.
semi_black
,
color:
AppColors
.
semi_black
,
),
),
),
),
Text
(
Text
(
"₹
${requestLists[index].amount}
"
,
"₹
${requestLists[index].amount}
"
,
style:
TextStyle
(
style:
TextStyle
(
fontFamily:
"JakartaMedium"
,
fontFamily:
"JakartaMedium"
,
fontSize:
14
,
fontSize:
14
,
color:
AppColors
.
app_blue
,
color:
AppColors
.
app_blue
,
),
),
),
),
],
],
...
@@ -199,7 +254,10 @@ late Commondaterangefilter cf;
...
@@ -199,7 +254,10 @@ late Commondaterangefilter cf;
// ),
// ),
],
],
),
),
Divider
(
thickness:
0.5
,
color:
Color
(
0xFFD7D7D7
)),
Divider
(
thickness:
0.5
,
color:
Color
(
0xFFD7D7D7
),
),
...
List
.
generate
(
5
,
(
j
)
{
...
List
.
generate
(
5
,
(
j
)
{
final
headings
=
[
final
headings
=
[
"To Account"
,
"To Account"
,
...
@@ -219,12 +277,16 @@ late Commondaterangefilter cf;
...
@@ -219,12 +277,16 @@ late Commondaterangefilter cf;
requestLists
[
index
].
paymentDate
,
requestLists
[
index
].
paymentDate
,
requestLists
[
index
].
description
,
requestLists
[
index
].
description
,
];
];
if
(
headings
[
j
]==
"Attachment"
&&
requestLists
[
index
]
if
(
headings
[
j
]
==
"Attachment"
&&
.
attachmentViewFileName
==
""
){
requestLists
[
index
]
.
attachmentViewFileName
==
""
)
{
return
SizedBox
.
shrink
();
return
SizedBox
.
shrink
();
}
}
return
Container
(
return
Container
(
padding:
EdgeInsets
.
symmetric
(
vertical:
5
),
padding:
EdgeInsets
.
symmetric
(
vertical:
5
,
),
child:
Row
(
child:
Row
(
crossAxisAlignment:
crossAxisAlignment:
CrossAxisAlignment
.
start
,
CrossAxisAlignment
.
start
,
...
@@ -233,9 +295,11 @@ late Commondaterangefilter cf;
...
@@ -233,9 +295,11 @@ late Commondaterangefilter cf;
child:
Text
(
child:
Text
(
headings
[
j
],
headings
[
j
],
style:
TextStyle
(
style:
TextStyle
(
fontFamily:
"JakartaMedium"
,
fontFamily:
"JakartaMedium"
,
fontSize:
14
,
fontSize:
14
,
color:
AppColors
.
semi_black
,
color:
AppColors
.
semi_black
,
),
),
),
),
),
),
...
@@ -253,31 +317,39 @@ late Commondaterangefilter cf;
...
@@ -253,31 +317,39 @@ late Commondaterangefilter cf;
context
,
context
,
)
=>
Fileviewer
(
)
=>
Fileviewer
(
fileName:
fileName:
requestLists
[
index
]
requestLists
[
index
].
attachmentViewFileName
!,
.
attachmentViewFileName
!,
fileUrl:
fileUrl:
requestLists
[
index
]
requestLists
[
index
].
attachmentDirFilePath
!,
.
attachmentDirFilePath
!,
),
),
),
),
);
);
},
},
child:
Text
(
child:
Text
(
subHeadings
[
j
]==
""
?
"-"
:
subHeadings
[
j
]??
"-"
,
subHeadings
[
j
]
==
""
?
"-"
:
subHeadings
[
j
]
??
"-"
,
style:
TextStyle
(
style:
TextStyle
(
fontSize:
14
,
fontSize:
14
,
color:
color:
j
==
1
j
==
1
?
AppColors
.
app_blue
?
AppColors
:
Color
(
0xFF818181
),
.
app_blue
:
Color
(
0xFF818181
,
),
decoration:
decoration:
j
==
1
j
==
1
?
TextDecoration
.
underline
?
TextDecoration
:
TextDecoration
.
none
,
.
underline
:
TextDecoration
.
none
,
decorationColor:
decorationColor:
j
==
1
j
==
1
?
AppColors
.
app_blue
?
AppColors
:
AppColors
.
white
,
.
app_blue
:
AppColors
.
white
,
),
),
),
),
),
),
...
@@ -292,24 +364,34 @@ late Commondaterangefilter cf;
...
@@ -292,24 +364,34 @@ late Commondaterangefilter cf;
context
,
context
,
MaterialPageRoute
(
MaterialPageRoute
(
builder:
builder:
(
context
)
=>
(
Paymentdetailspaymentrequisition
(
context
,
pageName:
widget
.
pageTitleName
,
)
=>
Paymentdetailspaymentrequisition
(
pageName:
widget
.
pageTitleName
,
paymentRequestId:
paymentRequestId:
requestLists
[
index
].
id
,
requestLists
[
index
]
.
id
,
),
),
),
),
);
);
if
(
res
==
true
){
if
(
res
==
true
)
{
provider
.
paymentsListAPI
(
context
,
''
,
''
);
provider
.
paymentsListAPI
(
context
,
''
,
''
,
);
}
}
},
},
child:
Container
(
child:
Container
(
padding:
EdgeInsets
.
symmetric
(
vertical:
5
),
padding:
EdgeInsets
.
symmetric
(
vertical:
5
,
),
child:
Row
(
child:
Row
(
crossAxisAlignment:
crossAxisAlignment:
CrossAxisAlignment
.
center
,
CrossAxisAlignment
.
center
,
mainAxisAlignment:
MainAxisAlignment
.
start
,
mainAxisAlignment:
MainAxisAlignment
.
start
,
children:
[
children:
[
Text
(
Text
(
"View Details"
,
"View Details"
,
...
@@ -333,12 +415,14 @@ late Commondaterangefilter cf;
...
@@ -333,12 +415,14 @@ late Commondaterangefilter cf;
},
},
),
),
),
),
):
Emptywidget
(
context
)
)
:
Emptywidget
(
context
),
),
),
),
),
);
);
},
},
);
)
:
NoNetwork
(
context
);
}
}
Future
<
void
>
_showOptionsSheet
(
BuildContext
context
)
{
Future
<
void
>
_showOptionsSheet
(
BuildContext
context
)
{
...
@@ -362,7 +446,10 @@ late Commondaterangefilter cf;
...
@@ -362,7 +446,10 @@ late Commondaterangefilter cf;
left:
15
,
left:
15
,
right:
15
,
right:
15
,
top:
10
,
top:
10
,
),
padding:
EdgeInsets
.
only
(
bottom:
MediaQuery
.
of
(
context
).
viewInsets
.
bottom
,),
),
padding:
EdgeInsets
.
only
(
bottom:
MediaQuery
.
of
(
context
).
viewInsets
.
bottom
,
),
child:
SingleChildScrollView
(
child:
SingleChildScrollView
(
child:
Column
(
child:
Column
(
...
...
lib/screens/finance/paymentReceiptDetails.dart
View file @
ee178d55
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
);
}
}
}
}
lib/screens/finance/paymentreceiptList.dart
View file @
ee178d55
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_svg/svg.dart'
;
import
'package:flutter_svg/svg.dart'
;
...
@@ -9,12 +10,14 @@ import 'package:provider/provider.dart';
...
@@ -9,12 +10,14 @@ import 'package:provider/provider.dart';
import
'../../Notifiers/financeProvider/paymentReceiptsProvider.dart'
;
import
'../../Notifiers/financeProvider/paymentReceiptsProvider.dart'
;
import
'../../Notifiers/financeProvider/paymentRequisitionPaymentsListProvider.dart'
;
import
'../../Notifiers/financeProvider/paymentRequisitionPaymentsListProvider.dart'
;
import
'../../Utils/app_colors.dart'
;
import
'../../Utils/app_colors.dart'
;
import
'../../Utils/commonServices.dart'
;
import
'../../Utils/commonWidgets.dart'
;
import
'../../Utils/commonWidgets.dart'
;
import
'../commonDateRangeFilter.dart'
;
import
'../commonDateRangeFilter.dart'
;
import
'FileViewer.dart'
;
import
'FileViewer.dart'
;
class
Paymentreceiptlist
extends
StatefulWidget
{
class
Paymentreceiptlist
extends
StatefulWidget
{
final
String
pageTitleName
;
final
String
pageTitleName
;
const
Paymentreceiptlist
({
super
.
key
,
required
this
.
pageTitleName
});
const
Paymentreceiptlist
({
super
.
key
,
required
this
.
pageTitleName
});
@override
@override
...
@@ -22,23 +25,41 @@ class Paymentreceiptlist extends StatefulWidget {
...
@@ -22,23 +25,41 @@ class Paymentreceiptlist extends StatefulWidget {
}
}
class
_PaymentreceiptlistState
extends
State
<
Paymentreceiptlist
>
{
class
_PaymentreceiptlistState
extends
State
<
Paymentreceiptlist
>
{
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
,
listen:
false
,
listen:
false
,
);
);
provider
.
paymentsListAPI
(
context
,
''
,
''
);
provider
.
paymentsListAPI
(
context
,
''
,
''
);
});
});
}
}
@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
)
{
final
requestLists
=
provider
.
receiptsList
;
final
requestLists
=
provider
.
receiptsList
;
return
WillPopScope
(
return
WillPopScope
(
...
@@ -47,7 +68,7 @@ class _PaymentreceiptlistState extends State<Paymentreceiptlist> {
...
@@ -47,7 +68,7 @@ class _PaymentreceiptlistState extends State<Paymentreceiptlist> {
},
},
child:
SafeArea
(
child:
SafeArea
(
top:
false
,
top:
false
,
bottom:
Platform
.
isIOS
?
false
:
true
,
bottom:
Platform
.
isIOS
?
false
:
true
,
child:
Scaffold
(
child:
Scaffold
(
resizeToAvoidBottomInset:
true
,
resizeToAvoidBottomInset:
true
,
appBar:
appbar2
(
appBar:
appbar2
(
...
@@ -65,12 +86,16 @@ class _PaymentreceiptlistState extends State<Paymentreceiptlist> {
...
@@ -65,12 +86,16 @@ class _PaymentreceiptlistState extends State<Paymentreceiptlist> {
InkResponse
(
InkResponse
(
onTap:
()
async
{
onTap:
()
async
{
var
cf
=
Commondaterangefilter
();
var
cf
=
Commondaterangefilter
();
var
result
=
await
cf
.
showFilterBottomSheet
(
context
);
var
result
=
await
cf
.
showFilterBottomSheet
(
context
,
);
if
(
result
!=
null
)
{
if
(
result
!=
null
)
{
var
dateRange
=
result
[
'dateRange'
]
as
DateTimeRange
?;
var
dateRange
=
result
[
'dateRange'
]
as
DateTimeRange
?;
print
(
"dateRange:
$dateRange
"
);
print
(
"dateRange:
$dateRange
"
);
var
formatted
=
result
[
'formatted'
]
as
List
<
String
>;
var
formatted
=
result
[
'formatted'
]
as
List
<
String
>;
print
(
"formatted:
$formatted
"
);
print
(
"formatted:
$formatted
"
);
if
(
formatted
.
isNotEmpty
)
{
if
(
formatted
.
isNotEmpty
)
{
...
@@ -78,7 +103,11 @@ class _PaymentreceiptlistState extends State<Paymentreceiptlist> {
...
@@ -78,7 +103,11 @@ class _PaymentreceiptlistState extends State<Paymentreceiptlist> {
var
toDate
=
formatted
[
1
];
// To date
var
toDate
=
formatted
[
1
];
// To date
print
(
"from_date:
$fromDate
"
);
print
(
"from_date:
$fromDate
"
);
print
(
"to_date:
$toDate
"
);
print
(
"to_date:
$toDate
"
);
provider
.
paymentsListAPI
(
context
,
fromDate
,
toDate
);
provider
.
paymentsListAPI
(
context
,
fromDate
,
toDate
,
);
// You can now use fromDate and toDate as needed
// You can now use fromDate and toDate as needed
// For example, store them or pass to another function
// For example, store them or pass to another function
}
else
{
}
else
{
...
@@ -88,17 +117,26 @@ class _PaymentreceiptlistState extends State<Paymentreceiptlist> {
...
@@ -88,17 +117,26 @@ class _PaymentreceiptlistState extends State<Paymentreceiptlist> {
print
(
"Bottom sheet closed without selection"
);
print
(
"Bottom sheet closed without selection"
);
}
}
},
},
child:
SvgPicture
.
asset
(
"assets/svg/filter_ic.svg"
,
height:
25
,),
child:
SvgPicture
.
asset
(
"assets/svg/filter_ic.svg"
,
height:
25
,
),
),
),
],
],
),
),
),
),
backgroundColor:
AppColors
.
scaffold_bg_color
,
backgroundColor:
AppColors
.
scaffold_bg_color
,
body:
provider
.
isLoading
body:
?
Center
(
child:
CircularProgressIndicator
.
adaptive
(
provider
.
isLoading
?
Center
(
child:
CircularProgressIndicator
.
adaptive
(
valueColor:
AlwaysStoppedAnimation
<
Color
>(
valueColor:
AlwaysStoppedAnimation
<
Color
>(
AppColors
.
app_blue
)
AppColors
.
app_blue
,
)):
requestLists
.
isNotEmpty
?
SizedBox
(
),
),
)
:
requestLists
.
isNotEmpty
?
SizedBox
(
child:
Scrollbar
(
child:
Scrollbar
(
child:
ListView
.
builder
(
child:
ListView
.
builder
(
itemCount:
requestLists
.
length
,
itemCount:
requestLists
.
length
,
...
@@ -130,7 +168,8 @@ class _PaymentreceiptlistState extends State<Paymentreceiptlist> {
...
@@ -130,7 +168,8 @@ class _PaymentreceiptlistState extends State<Paymentreceiptlist> {
padding:
EdgeInsets
.
all
(
8.0
),
padding:
EdgeInsets
.
all
(
8.0
),
decoration:
BoxDecoration
(
decoration:
BoxDecoration
(
color:
Color
(
0xFFFFF3CE
),
color:
Color
(
0xFFFFF3CE
),
borderRadius:
BorderRadius
.
circular
(
8
),
borderRadius:
BorderRadius
.
circular
(
8
),
),
),
child:
SvgPicture
.
asset
(
child:
SvgPicture
.
asset
(
"assets/svg/fin_ic.svg"
,
"assets/svg/fin_ic.svg"
,
...
@@ -146,29 +185,37 @@ class _PaymentreceiptlistState extends State<Paymentreceiptlist> {
...
@@ -146,29 +185,37 @@ class _PaymentreceiptlistState extends State<Paymentreceiptlist> {
CrossAxisAlignment
.
start
,
CrossAxisAlignment
.
start
,
children:
[
children:
[
Text
(
Text
(
requestLists
[
index
].
receipientAccount
!,
requestLists
[
index
]
.
receipientAccount
!,
style:
TextStyle
(
style:
TextStyle
(
fontFamily:
"JakartaMedium"
,
fontFamily:
"JakartaMedium"
,
fontSize:
14
,
fontSize:
14
,
color:
AppColors
.
semi_black
,
color:
AppColors
.
semi_black
,
),
),
),
),
Text
(
Text
(
"₹
${requestLists[index].amount}
"
,
"₹
${requestLists[index].amount}
"
,
style:
TextStyle
(
style:
TextStyle
(
fontFamily:
"JakartaMedium"
,
fontFamily:
"JakartaMedium"
,
fontSize:
14
,
fontSize:
14
,
color:
AppColors
.
app_blue
,
color:
AppColors
.
app_blue
,
),
),
),
),
],
],
),
),
),
),
),
),
],
],
),
),
Divider
(
thickness:
0.5
,
color:
Color
(
0xFFD7D7D7
)),
Divider
(
thickness:
0.5
,
color:
Color
(
0xFFD7D7D7
),
),
...
List
.
generate
(
5
,
(
j
)
{
...
List
.
generate
(
5
,
(
j
)
{
final
headings
=
[
final
headings
=
[
"Receipt Account"
,
"Receipt Account"
,
...
@@ -180,7 +227,8 @@ class _PaymentreceiptlistState extends State<Paymentreceiptlist> {
...
@@ -180,7 +227,8 @@ class _PaymentreceiptlistState extends State<Paymentreceiptlist> {
];
];
final
subHeadings
=
[
final
subHeadings
=
[
requestLists
[
index
].
receipientAccount
,
requestLists
[
index
]
.
receipientAccount
,
"View"
,
"View"
,
requestLists
[
index
].
requestMode
,
requestLists
[
index
].
requestMode
,
...
@@ -188,12 +236,16 @@ class _PaymentreceiptlistState extends State<Paymentreceiptlist> {
...
@@ -188,12 +236,16 @@ class _PaymentreceiptlistState extends State<Paymentreceiptlist> {
requestLists
[
index
].
receiptDate
,
requestLists
[
index
].
receiptDate
,
requestLists
[
index
].
description
,
requestLists
[
index
].
description
,
];
];
if
(
headings
[
j
]==
"Attachment"
&&
requestLists
[
index
]
if
(
headings
[
j
]
==
"Attachment"
&&
.
attachmentViewFileName
==
""
){
requestLists
[
index
]
.
attachmentViewFileName
==
""
)
{
return
SizedBox
.
shrink
();
return
SizedBox
.
shrink
();
}
}
return
Container
(
return
Container
(
padding:
EdgeInsets
.
symmetric
(
vertical:
5
),
padding:
EdgeInsets
.
symmetric
(
vertical:
5
,
),
child:
Row
(
child:
Row
(
crossAxisAlignment:
crossAxisAlignment:
CrossAxisAlignment
.
start
,
CrossAxisAlignment
.
start
,
...
@@ -202,9 +254,11 @@ class _PaymentreceiptlistState extends State<Paymentreceiptlist> {
...
@@ -202,9 +254,11 @@ class _PaymentreceiptlistState extends State<Paymentreceiptlist> {
child:
Text
(
child:
Text
(
headings
[
j
],
headings
[
j
],
style:
TextStyle
(
style:
TextStyle
(
fontFamily:
"JakartaMedium"
,
fontFamily:
"JakartaMedium"
,
fontSize:
14
,
fontSize:
14
,
color:
AppColors
.
semi_black
,
color:
AppColors
.
semi_black
,
),
),
),
),
),
),
...
@@ -222,31 +276,39 @@ class _PaymentreceiptlistState extends State<Paymentreceiptlist> {
...
@@ -222,31 +276,39 @@ class _PaymentreceiptlistState extends State<Paymentreceiptlist> {
context
,
context
,
)
=>
Fileviewer
(
)
=>
Fileviewer
(
fileName:
fileName:
requestLists
[
index
]
requestLists
[
index
].
attachmentViewFileName
!,
.
attachmentViewFileName
!,
fileUrl:
fileUrl:
requestLists
[
index
]
requestLists
[
index
].
attachmentDirFilePath
!,
.
attachmentDirFilePath
!,
),
),
),
),
);
);
},
},
child:
Text
(
child:
Text
(
subHeadings
[
j
]==
""
?
"-"
:
subHeadings
[
j
]??
"-"
,
subHeadings
[
j
]
==
""
?
"-"
:
subHeadings
[
j
]
??
"-"
,
style:
TextStyle
(
style:
TextStyle
(
fontSize:
14
,
fontSize:
14
,
color:
color:
j
==
1
j
==
1
?
AppColors
.
app_blue
?
AppColors
:
Color
(
0xFF818181
),
.
app_blue
:
Color
(
0xFF818181
,
),
decoration:
decoration:
j
==
1
j
==
1
?
TextDecoration
.
underline
?
TextDecoration
:
TextDecoration
.
none
,
.
underline
:
TextDecoration
.
none
,
decorationColor:
decorationColor:
j
==
1
j
==
1
?
AppColors
.
app_blue
?
AppColors
:
AppColors
.
white
,
.
app_blue
:
AppColors
.
white
,
),
),
),
),
),
),
...
@@ -261,24 +323,34 @@ class _PaymentreceiptlistState extends State<Paymentreceiptlist> {
...
@@ -261,24 +323,34 @@ class _PaymentreceiptlistState extends State<Paymentreceiptlist> {
context
,
context
,
MaterialPageRoute
(
MaterialPageRoute
(
builder:
builder:
(
context
)
=>
(
Paymentreceiptdetails
(
context
,
pageName:
widget
.
pageTitleName
,
)
=>
Paymentreceiptdetails
(
pageName:
widget
.
pageTitleName
,
paymentRequestId:
paymentRequestId:
requestLists
[
index
].
id
,
requestLists
[
index
]
.
id
,
),
),
),
),
);
);
if
(
res
==
true
){
if
(
res
==
true
)
{
provider
.
paymentsListAPI
(
context
,
''
,
''
);
provider
.
paymentsListAPI
(
context
,
''
,
''
,
);
}
}
},
},
child:
Container
(
child:
Container
(
padding:
EdgeInsets
.
symmetric
(
vertical:
5
),
padding:
EdgeInsets
.
symmetric
(
vertical:
5
,
),
child:
Row
(
child:
Row
(
crossAxisAlignment:
crossAxisAlignment:
CrossAxisAlignment
.
center
,
CrossAxisAlignment
.
center
,
mainAxisAlignment:
MainAxisAlignment
.
start
,
mainAxisAlignment:
MainAxisAlignment
.
start
,
children:
[
children:
[
Text
(
Text
(
"View Details"
,
"View Details"
,
...
@@ -302,12 +374,14 @@ class _PaymentreceiptlistState extends State<Paymentreceiptlist> {
...
@@ -302,12 +374,14 @@ class _PaymentreceiptlistState extends State<Paymentreceiptlist> {
},
},
),
),
),
),
):
Emptywidget
(
context
)
)
:
Emptywidget
(
context
),
),
),
),
),
);
);
},
},
);
)
:
NoNetwork
(
context
);
}
}
Future
<
void
>
_showOptionsSheet
(
BuildContext
context
)
{
Future
<
void
>
_showOptionsSheet
(
BuildContext
context
)
{
...
@@ -332,7 +406,9 @@ class _PaymentreceiptlistState extends State<Paymentreceiptlist> {
...
@@ -332,7 +406,9 @@ class _PaymentreceiptlistState extends State<Paymentreceiptlist> {
right:
15
,
right:
15
,
top:
10
,
top:
10
,
),
),
padding:
EdgeInsets
.
only
(
bottom:
MediaQuery
.
of
(
context
).
viewInsets
.
bottom
,),
padding:
EdgeInsets
.
only
(
bottom:
MediaQuery
.
of
(
context
).
viewInsets
.
bottom
,
),
child:
SingleChildScrollView
(
child:
SingleChildScrollView
(
child:
Column
(
child:
Column
(
mainAxisSize:
MainAxisSize
.
min
,
mainAxisSize:
MainAxisSize
.
min
,
...
...
Prev
1
2
3
Next
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment