toast added
This commit is contained in:
parent
dbddbed8ce
commit
1f7f806e0a
@ -1,5 +1,5 @@
|
|||||||
class Env {
|
class Env {
|
||||||
static const String envName = String.fromEnvironment('ENV', defaultValue: 'dev');
|
static const String envName = String.fromEnvironment('ENV', defaultValue: 'dev');
|
||||||
static const String apiUrl = String.fromEnvironment('API_URL');
|
static const String apiUrl = String.fromEnvironment('https://venbait.in/nhance/partner/dev/');
|
||||||
static const String baseUrl = String.fromEnvironment('BASE_URL');
|
static const String baseUrl = String.fromEnvironment('BASE_URL');
|
||||||
}
|
}
|
||||||
|
|||||||
@ -8,7 +8,13 @@ import 'dart:convert';
|
|||||||
class ApiService {
|
class ApiService {
|
||||||
final BuildContext context;
|
final BuildContext context;
|
||||||
|
|
||||||
|
Future<void> _clearLocalStorageAndRedirect() async {
|
||||||
|
final prefs = await SharedPreferences.getInstance();
|
||||||
|
await prefs.clear();
|
||||||
|
// Assuming you have access to the context
|
||||||
|
ToastHelper.showErrorToast(context, 'Session Out');
|
||||||
|
Navigator.pushNamed(context, 'login');
|
||||||
|
}
|
||||||
|
|
||||||
Future<Map<String, dynamic>> _makeGetRequest(
|
Future<Map<String, dynamic>> _makeGetRequest(
|
||||||
Uri url, Map<String, String> headers) async {
|
Uri url, Map<String, String> headers) async {
|
||||||
|
|||||||
223
lib/data/utils/toastNotification.dart
Normal file
223
lib/data/utils/toastNotification.dart
Normal file
@ -0,0 +1,223 @@
|
|||||||
|
import 'package:flutter/material.dart';
|
||||||
|
// import 'package:fluttertoast/fluttertoast.dart';
|
||||||
|
import 'package:toastification/toastification.dart';
|
||||||
|
|
||||||
|
class ToastHelper {
|
||||||
|
static void showSuccessToast(BuildContext context, String message) {
|
||||||
|
toastification.show(
|
||||||
|
context: context,
|
||||||
|
type: ToastificationType.success,
|
||||||
|
style: ToastificationStyle.flatColored,
|
||||||
|
autoCloseDuration: const Duration(seconds: 2),
|
||||||
|
title: Text(message),
|
||||||
|
// you can also use RichText widget for title and description parameters
|
||||||
|
// description: RichText(
|
||||||
|
// text: const TextSpan(text: 'This is a sample toast message. ')),
|
||||||
|
alignment: Alignment.topRight,
|
||||||
|
direction: TextDirection.ltr,
|
||||||
|
animationDuration: const Duration(milliseconds: 100),
|
||||||
|
animationBuilder: (context, animation, alignment, child) {
|
||||||
|
return FadeTransition(
|
||||||
|
opacity: animation,
|
||||||
|
child: child,
|
||||||
|
);
|
||||||
|
},
|
||||||
|
icon: const Icon(Icons.check),
|
||||||
|
primaryColor: Colors.green,
|
||||||
|
backgroundColor: Colors.white,
|
||||||
|
foregroundColor: Colors.black,
|
||||||
|
padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 16),
|
||||||
|
margin: const EdgeInsets.symmetric(horizontal: 12, vertical: 8),
|
||||||
|
borderRadius: BorderRadius.circular(12),
|
||||||
|
boxShadow: const [
|
||||||
|
BoxShadow(
|
||||||
|
color: Color(0x07000000),
|
||||||
|
blurRadius: 16,
|
||||||
|
offset: Offset(0, 16),
|
||||||
|
spreadRadius: 0,
|
||||||
|
)
|
||||||
|
],
|
||||||
|
showProgressBar: true,
|
||||||
|
closeButtonShowType: CloseButtonShowType.onHover,
|
||||||
|
closeOnClick: false,
|
||||||
|
pauseOnHover: true,
|
||||||
|
dragToClose: true,
|
||||||
|
applyBlurEffect: true,
|
||||||
|
callbacks: ToastificationCallbacks(
|
||||||
|
onTap: (toastItem) => print('Toast ${toastItem.id} tapped'),
|
||||||
|
onCloseButtonTap: (toastItem) =>
|
||||||
|
print('Toast ${toastItem.id} close button tapped'),
|
||||||
|
onAutoCompleteCompleted: (toastItem) =>
|
||||||
|
print('Toast ${toastItem.id} auto complete completed'),
|
||||||
|
onDismissed: (toastItem) => print('Toast ${toastItem.id} dismissed'),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void showWarningToast(BuildContext context, String message) {
|
||||||
|
toastification.show(
|
||||||
|
context: context,
|
||||||
|
type: ToastificationType.warning,
|
||||||
|
style: ToastificationStyle.flatColored,
|
||||||
|
autoCloseDuration: const Duration(seconds: 2),
|
||||||
|
title: Text(message),
|
||||||
|
// you can also use RichText widget for title and description parameters
|
||||||
|
// description: RichText(
|
||||||
|
// text: const TextSpan(text: 'This is a sample toast message. ')),
|
||||||
|
alignment: Alignment.topRight,
|
||||||
|
direction: TextDirection.ltr,
|
||||||
|
animationDuration: const Duration(milliseconds: 100),
|
||||||
|
animationBuilder: (context, animation, alignment, child) {
|
||||||
|
return FadeTransition(
|
||||||
|
opacity: animation,
|
||||||
|
child: child,
|
||||||
|
);
|
||||||
|
},
|
||||||
|
icon: const Icon(Icons.warning),
|
||||||
|
primaryColor: Colors.amberAccent,
|
||||||
|
backgroundColor: Colors.white,
|
||||||
|
foregroundColor: Colors.black,
|
||||||
|
padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 16),
|
||||||
|
margin: const EdgeInsets.symmetric(horizontal: 12, vertical: 8),
|
||||||
|
borderRadius: BorderRadius.circular(12),
|
||||||
|
boxShadow: const [
|
||||||
|
BoxShadow(
|
||||||
|
color: Color(0x07000000),
|
||||||
|
blurRadius: 16,
|
||||||
|
offset: Offset(0, 16),
|
||||||
|
spreadRadius: 0,
|
||||||
|
)
|
||||||
|
],
|
||||||
|
showProgressBar: true,
|
||||||
|
closeButtonShowType: CloseButtonShowType.onHover,
|
||||||
|
closeOnClick: false,
|
||||||
|
pauseOnHover: true,
|
||||||
|
dragToClose: true,
|
||||||
|
applyBlurEffect: true,
|
||||||
|
callbacks: ToastificationCallbacks(
|
||||||
|
onTap: (toastItem) => print('Toast ${toastItem.id} tapped'),
|
||||||
|
onCloseButtonTap: (toastItem) =>
|
||||||
|
print('Toast ${toastItem.id} close button tapped'),
|
||||||
|
onAutoCompleteCompleted: (toastItem) =>
|
||||||
|
print('Toast ${toastItem.id} auto complete completed'),
|
||||||
|
onDismissed: (toastItem) => print('Toast ${toastItem.id} dismissed'),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void showErrorToast(BuildContext context, String message) {
|
||||||
|
toastification.show(
|
||||||
|
context: context,
|
||||||
|
type: ToastificationType.error,
|
||||||
|
style: ToastificationStyle.flatColored,
|
||||||
|
autoCloseDuration: const Duration(seconds: 2),
|
||||||
|
title: Text(message),
|
||||||
|
// you can also use RichText widget for title and description parameters
|
||||||
|
// description: RichText(
|
||||||
|
// text: const TextSpan(text: 'This is a sample toast message. ')),
|
||||||
|
alignment: Alignment.topRight,
|
||||||
|
direction: TextDirection.ltr,
|
||||||
|
animationDuration: const Duration(milliseconds: 100),
|
||||||
|
animationBuilder: (context, animation, alignment, child) {
|
||||||
|
return FadeTransition(
|
||||||
|
opacity: animation,
|
||||||
|
child: child,
|
||||||
|
);
|
||||||
|
},
|
||||||
|
icon: const Icon(Icons.error),
|
||||||
|
primaryColor: Colors.redAccent,
|
||||||
|
backgroundColor: Colors.white,
|
||||||
|
foregroundColor: Colors.black,
|
||||||
|
padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 16),
|
||||||
|
margin: const EdgeInsets.symmetric(horizontal: 12, vertical: 8),
|
||||||
|
borderRadius: BorderRadius.circular(12),
|
||||||
|
boxShadow: const [
|
||||||
|
BoxShadow(
|
||||||
|
color: Color(0x07000000),
|
||||||
|
blurRadius: 16,
|
||||||
|
offset: Offset(0, 16),
|
||||||
|
spreadRadius: 0,
|
||||||
|
)
|
||||||
|
],
|
||||||
|
showProgressBar: true,
|
||||||
|
closeButtonShowType: CloseButtonShowType.onHover,
|
||||||
|
closeOnClick: false,
|
||||||
|
pauseOnHover: true,
|
||||||
|
dragToClose: true,
|
||||||
|
applyBlurEffect: true,
|
||||||
|
callbacks: ToastificationCallbacks(
|
||||||
|
onTap: (toastItem) => print('Toast ${toastItem.id} tapped'),
|
||||||
|
onCloseButtonTap: (toastItem) =>
|
||||||
|
print('Toast ${toastItem.id} close button tapped'),
|
||||||
|
onAutoCompleteCompleted: (toastItem) =>
|
||||||
|
print('Toast ${toastItem.id} auto complete completed'),
|
||||||
|
onDismissed: (toastItem) => print('Toast ${toastItem.id} dismissed'),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
// _showToast(context, message, Colors.red);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void showInfoToast(BuildContext context, String message) {
|
||||||
|
toastification.show(
|
||||||
|
context: context,
|
||||||
|
type: ToastificationType.info,
|
||||||
|
style: ToastificationStyle.flatColored,
|
||||||
|
autoCloseDuration: const Duration(seconds: 2),
|
||||||
|
title: Text(message),
|
||||||
|
// you can also use RichText widget for title and description parameters
|
||||||
|
// description: RichText(
|
||||||
|
// text: const TextSpan(text: 'This is a sample toast message. ')),
|
||||||
|
alignment: Alignment.topRight,
|
||||||
|
direction: TextDirection.ltr,
|
||||||
|
animationDuration: const Duration(milliseconds: 100),
|
||||||
|
animationBuilder: (context, animation, alignment, child) {
|
||||||
|
return FadeTransition(
|
||||||
|
opacity: animation,
|
||||||
|
child: child,
|
||||||
|
);
|
||||||
|
},
|
||||||
|
icon: const Icon(Icons.info),
|
||||||
|
primaryColor: Colors.lightBlue,
|
||||||
|
backgroundColor: Colors.white,
|
||||||
|
foregroundColor: Colors.black,
|
||||||
|
padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 16),
|
||||||
|
margin: const EdgeInsets.symmetric(horizontal: 12, vertical: 8),
|
||||||
|
borderRadius: BorderRadius.circular(12),
|
||||||
|
boxShadow: const [
|
||||||
|
BoxShadow(
|
||||||
|
color: Color(0x07000000),
|
||||||
|
blurRadius: 16,
|
||||||
|
offset: Offset(0, 16),
|
||||||
|
spreadRadius: 0,
|
||||||
|
)
|
||||||
|
],
|
||||||
|
showProgressBar: true,
|
||||||
|
closeButtonShowType: CloseButtonShowType.onHover,
|
||||||
|
closeOnClick: false,
|
||||||
|
pauseOnHover: true,
|
||||||
|
dragToClose: true,
|
||||||
|
applyBlurEffect: true,
|
||||||
|
callbacks: ToastificationCallbacks(
|
||||||
|
onTap: (toastItem) => print('Toast ${toastItem.id} tapped'),
|
||||||
|
onCloseButtonTap: (toastItem) =>
|
||||||
|
print('Toast ${toastItem.id} close button tapped'),
|
||||||
|
onAutoCompleteCompleted: (toastItem) =>
|
||||||
|
print('Toast ${toastItem.id} auto complete completed'),
|
||||||
|
onDismissed: (toastItem) => print('Toast ${toastItem.id} dismissed'),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
// _showToast(context, message, Colors.red);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void _showToast(BuildContext context, String message, Color color) {
|
||||||
|
// Fluttertoast.showToast(
|
||||||
|
// msg: message,
|
||||||
|
// toastLength: Toast.LENGTH_SHORT,
|
||||||
|
// gravity: ToastGravity.TOP,
|
||||||
|
// timeInSecForIosWeb: 5,
|
||||||
|
// backgroundColor: color,
|
||||||
|
// textColor: Colors.white,
|
||||||
|
// fontSize: 16.0,
|
||||||
|
// );
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -80,6 +80,212 @@ class _LoginScreenState extends State<LoginScreen> {
|
|||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@override
|
||||||
|
void initState() {
|
||||||
|
super.initState();
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<void> verifyMobileAndEmailNumber() async {
|
||||||
|
try {
|
||||||
|
if (_formKey.currentState!.validate()) {
|
||||||
|
// setState(() {
|
||||||
|
// _isLoading = true;
|
||||||
|
// });
|
||||||
|
|
||||||
|
// Determine the API and the payload based on the visible field
|
||||||
|
String apiEndpoint = isEmailFieldVisible
|
||||||
|
? Env.apiUrl + 'verifyEmployeeEmailId'
|
||||||
|
: Env.apiUrl + 'verifyEmployeeNumber';
|
||||||
|
|
||||||
|
Map<String, dynamic> payload = isEmailFieldVisible
|
||||||
|
? {'email': emailController.text}
|
||||||
|
: {'mobile_number': mobileController.text};
|
||||||
|
|
||||||
|
final response = await http.post(
|
||||||
|
Uri.parse(apiEndpoint),
|
||||||
|
body: json.encode(payload),
|
||||||
|
headers: {
|
||||||
|
HttpHeaders.contentTypeHeader: 'application/json',
|
||||||
|
},
|
||||||
|
);
|
||||||
|
|
||||||
|
if (response.statusCode == 200) {
|
||||||
|
Map<String, dynamic> data = json.decode(response.body);
|
||||||
|
bool userVerification = data['data']['user_verification'];
|
||||||
|
String message = data['data']['message'];
|
||||||
|
if (userVerification) {
|
||||||
|
final SharedPreferences prefs =
|
||||||
|
await SharedPreferences.getInstance();
|
||||||
|
// var enteredMobileNumber = mobileController.text;
|
||||||
|
// prefs.setString('empMobileNo', enteredMobileNumber);
|
||||||
|
if (isEmailFieldVisible) {
|
||||||
|
print('isEmailFieldVisible $isEmailFieldVisible');
|
||||||
|
// prefs.setString('empEmail', emailController.text);
|
||||||
|
print('${emailController.text}');
|
||||||
|
ToastHelper.showSuccessToast(
|
||||||
|
context, 'Verification code sent to ${emailController.text}');
|
||||||
|
Navigator.push(
|
||||||
|
context,
|
||||||
|
MaterialPageRoute(
|
||||||
|
builder: (context) => MyEmailVerify(
|
||||||
|
email: emailController.text, // Pass the phone number
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
_verifyPhoneNumber();
|
||||||
|
}
|
||||||
|
|
||||||
|
// ToastHelper.showSuccessToast(context, message);
|
||||||
|
} else {
|
||||||
|
setState(() {
|
||||||
|
_isLoading = false;
|
||||||
|
});
|
||||||
|
ToastHelper.showErrorToast(context, message);
|
||||||
|
print('Invalid mobile number');
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
setState(() {
|
||||||
|
_isLoading = false;
|
||||||
|
});
|
||||||
|
ToastHelper.showErrorToast(context, 'Something went wrong');
|
||||||
|
throw Exception('Failed to verify mobile number');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
setState(() {
|
||||||
|
_isLoading = false;
|
||||||
|
});
|
||||||
|
ToastHelper.showErrorToast(context, 'Something went wrong');
|
||||||
|
print('Error: $e');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Future<void> _verifyPhoneNumber() async {
|
||||||
|
// var enteredMobileNumber = mobileController.text;
|
||||||
|
// var countryCode = countryController.text;
|
||||||
|
// print('${countryCode + enteredMobileNumber}');
|
||||||
|
// await _auth.verifyPhoneNumber(
|
||||||
|
// phoneNumber: '${countryCode + enteredMobileNumber}',
|
||||||
|
// timeout: const Duration(seconds: 60),
|
||||||
|
// verificationCompleted: (PhoneAuthCredential credential) async {
|
||||||
|
// await _auth.signInWithCredential(credential);
|
||||||
|
// // ToastHelper.showSuccessToast(context, 'Verified Successfully!');
|
||||||
|
// // setState(() {
|
||||||
|
// // _isLoading = false;
|
||||||
|
// // });
|
||||||
|
// },
|
||||||
|
// verificationFailed: (FirebaseAuthException e) {
|
||||||
|
// print('Verification Failed: ${e.code} - ${e.message}');
|
||||||
|
// String errorMessage;
|
||||||
|
// if (e.code == 'invalid-app-credential') {
|
||||||
|
// errorMessage = 'Invalid Credential. Please try again.';
|
||||||
|
// } else if (e.code == 'invalid-phone-number') {
|
||||||
|
// errorMessage = 'The provided phone number is not valid.';
|
||||||
|
// } else if (e.code == 'too-many-requests') {
|
||||||
|
// errorMessage = 'Too many requests. Try again later.';
|
||||||
|
// } else {
|
||||||
|
// errorMessage = 'Verification Failed: ${e.message}';
|
||||||
|
// }
|
||||||
|
// ScaffoldMessenger.of(context).showSnackBar(
|
||||||
|
// SnackBar(
|
||||||
|
// content: Text(errorMessage),
|
||||||
|
// duration: Duration(seconds: 2),
|
||||||
|
// ),
|
||||||
|
// );
|
||||||
|
//
|
||||||
|
// ToastHelper.showSuccessToast(context, errorMessage);
|
||||||
|
// setState(() {
|
||||||
|
// _isLoading = false;
|
||||||
|
// });
|
||||||
|
// },
|
||||||
|
// codeSent: (String verificationId, int? resendToken) async {
|
||||||
|
// setState(() {
|
||||||
|
// _verificationId = verificationId;
|
||||||
|
// _resendToken = resendToken;
|
||||||
|
// });
|
||||||
|
//
|
||||||
|
// // When getting the verificationId
|
||||||
|
// SharedPreferences prefs = await SharedPreferences.getInstance();
|
||||||
|
// prefs.setString('verificationId', _verificationId);
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// ToastHelper.showSuccessToast(
|
||||||
|
// context, 'Verification code sent to ${enteredMobileNumber}');
|
||||||
|
//
|
||||||
|
// Navigator.push(
|
||||||
|
// context,
|
||||||
|
// MaterialPageRoute(
|
||||||
|
// builder: (context) => MyVerify(
|
||||||
|
// verificationId: _verificationId,
|
||||||
|
// mobileNumber: enteredMobileNumber,
|
||||||
|
// resendToken: _resendToken,
|
||||||
|
// onResendCode: _resendCode, // Pass the phone number
|
||||||
|
// ),
|
||||||
|
// ),
|
||||||
|
// );
|
||||||
|
// setState(() {
|
||||||
|
// _isLoading = false;
|
||||||
|
// });
|
||||||
|
// },
|
||||||
|
// codeAutoRetrievalTimeout: (String verificationId) async{
|
||||||
|
// setState(() {
|
||||||
|
// _verificationId = verificationId;
|
||||||
|
// });
|
||||||
|
// final prefs = await SharedPreferences.getInstance();
|
||||||
|
// await prefs.setString('verificationId', verificationId);
|
||||||
|
// ToastHelper.showSuccessToast(context, 'Code auto-retrieval timed out.');
|
||||||
|
// setState(() {
|
||||||
|
// _isLoading = false;
|
||||||
|
// });
|
||||||
|
// },
|
||||||
|
// );
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// void _resendCode(String mobileNumber, int? resendToken) async {
|
||||||
|
// await _auth.verifyPhoneNumber(
|
||||||
|
// phoneNumber: '${countryController.text + mobileNumber}',
|
||||||
|
// timeout: const Duration(seconds: 60),
|
||||||
|
// forceResendingToken: resendToken,
|
||||||
|
// verificationCompleted: (PhoneAuthCredential credential) async {
|
||||||
|
// await _auth.signInWithCredential(credential);
|
||||||
|
// },
|
||||||
|
// verificationFailed: (FirebaseAuthException e) {
|
||||||
|
// if (e.code == 'invalid-phone-number') {
|
||||||
|
// print('The provided phone number is not valid.');
|
||||||
|
// }
|
||||||
|
// },
|
||||||
|
// codeSent: (String verificationId, int? resendToken) async{
|
||||||
|
// final prefs = await SharedPreferences.getInstance();
|
||||||
|
// await prefs.setString('verificationId', verificationId);
|
||||||
|
// setState(() {
|
||||||
|
// _verificationId = verificationId;
|
||||||
|
// _resendToken = resendToken;
|
||||||
|
// });
|
||||||
|
// ToastHelper.showSuccessToast(
|
||||||
|
// context, 'Verification code resent to ${mobileNumber}');
|
||||||
|
// Navigator.push(
|
||||||
|
// context,
|
||||||
|
// MaterialPageRoute(
|
||||||
|
// builder: (context) => MyVerify(
|
||||||
|
// verificationId: _verificationId,
|
||||||
|
// mobileNumber: mobileNumber,
|
||||||
|
// resendToken: _resendToken,
|
||||||
|
// onResendCode: _resendCode,
|
||||||
|
// ),
|
||||||
|
// ),
|
||||||
|
// );
|
||||||
|
// },
|
||||||
|
// codeAutoRetrievalTimeout: (String verificationId) async{
|
||||||
|
// final prefs = await SharedPreferences.getInstance();
|
||||||
|
// await prefs.setString('verificationId', verificationId);
|
||||||
|
// setState(() {
|
||||||
|
// _verificationId = verificationId;
|
||||||
|
// });
|
||||||
|
// },
|
||||||
|
// );
|
||||||
|
// }
|
||||||
|
|
||||||
Future<void> sendMobileOrEmailVerify() async {
|
Future<void> sendMobileOrEmailVerify() async {
|
||||||
if (!_formKey.currentState!.validate()) return;
|
if (!_formKey.currentState!.validate()) return;
|
||||||
setState(() {
|
setState(() {
|
||||||
|
|||||||
344
pubspec.lock
344
pubspec.lock
@ -9,6 +9,14 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "85.0.0"
|
version: "85.0.0"
|
||||||
|
_flutterfire_internals:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: _flutterfire_internals
|
||||||
|
sha256: "948f7d74f41dd6f2d563ea9f4c21d7ea764f8e047d2b24138974c19c24d37eb6"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "1.3.61"
|
||||||
analyzer:
|
analyzer:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -17,6 +25,14 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "7.7.1"
|
version: "7.7.1"
|
||||||
|
animated_bottom_navigation_bar:
|
||||||
|
dependency: "direct main"
|
||||||
|
description:
|
||||||
|
name: animated_bottom_navigation_bar
|
||||||
|
sha256: "94971fdfd53acd443acd0d17ce1cb5219ad833f20c75b50c55b205e54a5d6117"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "1.4.0"
|
||||||
args:
|
args:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -233,6 +249,102 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "7.0.1"
|
version: "7.0.1"
|
||||||
|
firebase_app_check:
|
||||||
|
dependency: "direct main"
|
||||||
|
description:
|
||||||
|
name: firebase_app_check
|
||||||
|
sha256: "3bf5d9c9043723ae12c09b2a012ca5f32653a1bc30a0a9818983766ea06d72a8"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "0.4.0+1"
|
||||||
|
firebase_app_check_platform_interface:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: firebase_app_check_platform_interface
|
||||||
|
sha256: bdda519aa487be605a53093ececa564d48afadd1a1d018520ce45d00415ac03d
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "0.2.0+1"
|
||||||
|
firebase_app_check_web:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: firebase_app_check_web
|
||||||
|
sha256: ab7b57c95faf266e2d5cd9fc57cda54d1fdfbc2c429c09b095830d4186f25920
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "0.2.0+16"
|
||||||
|
firebase_auth:
|
||||||
|
dependency: "direct main"
|
||||||
|
description:
|
||||||
|
name: firebase_auth
|
||||||
|
sha256: b843f8b6897654899bfc437e385f710f79fdf1fe872ce629cbdf6017772d5803
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "6.0.2"
|
||||||
|
firebase_auth_platform_interface:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: firebase_auth_platform_interface
|
||||||
|
sha256: c7acba5e95dc8095149c4534e968d61099896f1a09421d46d7c3fc3069082a37
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "8.1.1"
|
||||||
|
firebase_auth_web:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: firebase_auth_web
|
||||||
|
sha256: "083c57b761b33f766824d7835c2b47abacbc4d82c7193e91442d77b983675b28"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "6.0.2"
|
||||||
|
firebase_core:
|
||||||
|
dependency: "direct main"
|
||||||
|
description:
|
||||||
|
name: firebase_core
|
||||||
|
sha256: "967dae9a65f69377beb9f4ab292ea63ce5befa1ce24682cab1b69ca4b7a46927"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "4.1.0"
|
||||||
|
firebase_core_platform_interface:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: firebase_core_platform_interface
|
||||||
|
sha256: "5dbc900677dcbe5873d22ad7fbd64b047750124f1f9b7ebe2a33b9ddccc838eb"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "6.0.0"
|
||||||
|
firebase_core_web:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: firebase_core_web
|
||||||
|
sha256: f7ee08febc1c4451588ce58ffcf28edaee857e9a196fee88b85deb889990094a
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "3.1.0"
|
||||||
|
firebase_messaging:
|
||||||
|
dependency: "direct main"
|
||||||
|
description:
|
||||||
|
name: firebase_messaging
|
||||||
|
sha256: aad5dcdea5698499b70d74d5a53b1f6a9972f85f97225e4b7ac006dd8d4f9bac
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "16.0.1"
|
||||||
|
firebase_messaging_platform_interface:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: firebase_messaging_platform_interface
|
||||||
|
sha256: "825bc11767bf50a43dccf49b3026f847ec31d0f176139bfc48d662cc128b5014"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "4.7.1"
|
||||||
|
firebase_messaging_web:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: firebase_messaging_web
|
||||||
|
sha256: db8dbdd79921245c4de02407e33cae2d1868683be18a5ba948d2af5311e3ef5d
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "4.0.1"
|
||||||
fixnum:
|
fixnum:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -246,6 +358,14 @@ packages:
|
|||||||
description: flutter
|
description: flutter
|
||||||
source: sdk
|
source: sdk
|
||||||
version: "0.0.0"
|
version: "0.0.0"
|
||||||
|
flutter_dotenv:
|
||||||
|
dependency: "direct main"
|
||||||
|
description:
|
||||||
|
name: flutter_dotenv
|
||||||
|
sha256: d4130c4a43e0b13fefc593bc3961f2cb46e30cb79e253d4a526b1b5d24ae1ce4
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "6.0.0"
|
||||||
flutter_hooks:
|
flutter_hooks:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
@ -262,6 +382,14 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "5.0.0"
|
version: "5.0.0"
|
||||||
|
flutter_plugin_android_lifecycle:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: flutter_plugin_android_lifecycle
|
||||||
|
sha256: b0694b7fb1689b0e6cc193b3f1fcac6423c4f93c74fb20b806c6b6f196db0c31
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "2.0.30"
|
||||||
flutter_riverpod:
|
flutter_riverpod:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
@ -368,6 +496,54 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "6.3.1"
|
version: "6.3.1"
|
||||||
|
google_identity_services_web:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: google_identity_services_web
|
||||||
|
sha256: "5d187c46dc59e02646e10fe82665fc3884a9b71bc1c90c2b8b749316d33ee454"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "0.3.3+1"
|
||||||
|
google_sign_in:
|
||||||
|
dependency: "direct main"
|
||||||
|
description:
|
||||||
|
name: google_sign_in
|
||||||
|
sha256: "939a8b58f84c4053811b8c1bc9adbcb59449a15b37958264bbf60020698cca0e"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "7.1.1"
|
||||||
|
google_sign_in_android:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: google_sign_in_android
|
||||||
|
sha256: "666c3a133f5ec4256f08884359dc34788778d96a378d804203bc57a73ffbd9c0"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "7.0.5"
|
||||||
|
google_sign_in_ios:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: google_sign_in_ios
|
||||||
|
sha256: c7ee744ebbcd98353966dbdee735d4fca085226f6bf725c6bea8a5c8fe0055bc
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "6.1.0"
|
||||||
|
google_sign_in_platform_interface:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: google_sign_in_platform_interface
|
||||||
|
sha256: "8736443134d2cccadd4f228d600177cb3947e36683466a6ab96877ce6932885a"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "3.0.0"
|
||||||
|
google_sign_in_web:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: google_sign_in_web
|
||||||
|
sha256: "09ac306b2787b48f19c857b9f93375b654f774643c75bd6a1a078c85f4f7b468"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "1.0.0"
|
||||||
graphs:
|
graphs:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -400,6 +576,14 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "4.1.2"
|
version: "4.1.2"
|
||||||
|
iconsax_flutter:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: iconsax_flutter
|
||||||
|
sha256: d14b4cec8586025ac15276bdd40f6eea308cb85748135965bb6255f14beb2564
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "1.0.1"
|
||||||
intl:
|
intl:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
@ -440,6 +624,14 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "6.10.0"
|
version: "6.10.0"
|
||||||
|
jwt_decode:
|
||||||
|
dependency: "direct main"
|
||||||
|
description:
|
||||||
|
name: jwt_decode
|
||||||
|
sha256: d2e9f68c052b2225130977429d30f187aa1981d789c76ad104a32243cfdebfbb
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "0.3.1"
|
||||||
leak_tracker:
|
leak_tracker:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -472,6 +664,46 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "5.1.1"
|
version: "5.1.1"
|
||||||
|
local_auth:
|
||||||
|
dependency: "direct main"
|
||||||
|
description:
|
||||||
|
name: local_auth
|
||||||
|
sha256: "434d854cf478f17f12ab29a76a02b3067f86a63a6d6c4eb8fbfdcfe4879c1b7b"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "2.3.0"
|
||||||
|
local_auth_android:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: local_auth_android
|
||||||
|
sha256: "48924f4a8b3cc45994ad5993e2e232d3b00788a305c1bf1c7db32cef281ce9a3"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "1.0.52"
|
||||||
|
local_auth_darwin:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: local_auth_darwin
|
||||||
|
sha256: "0e9706a8543a4a2eee60346294d6a633dd7c3ee60fae6b752570457c4ff32055"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "1.6.0"
|
||||||
|
local_auth_platform_interface:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: local_auth_platform_interface
|
||||||
|
sha256: "1b842ff177a7068442eae093b64abe3592f816afd2a533c0ebcdbe40f9d2075a"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "1.0.10"
|
||||||
|
local_auth_windows:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: local_auth_windows
|
||||||
|
sha256: bc4e66a29b0fdf751aafbec923b5bed7ad6ed3614875d8151afe2578520b2ab5
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "1.0.11"
|
||||||
logging:
|
logging:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -528,6 +760,22 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.2.0"
|
version: "2.2.0"
|
||||||
|
package_info_plus:
|
||||||
|
dependency: "direct main"
|
||||||
|
description:
|
||||||
|
name: package_info_plus
|
||||||
|
sha256: "16eee997588c60225bda0488b6dcfac69280a6b7a3cf02c741895dd370a02968"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "8.3.1"
|
||||||
|
package_info_plus_platform_interface:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: package_info_plus_platform_interface
|
||||||
|
sha256: "202a487f08836a592a6bd4f901ac69b3a8f146af552bbd14407b6b41e1c3f086"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "3.2.1"
|
||||||
path:
|
path:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -584,6 +832,14 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.3.0"
|
version: "2.3.0"
|
||||||
|
pausable_timer:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: pausable_timer
|
||||||
|
sha256: "6ef1a95441ec3439de6fb63f39a011b67e693198e7dae14e20675c3c00e86074"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "3.1.0+3"
|
||||||
petitparser:
|
petitparser:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -757,6 +1013,14 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.10.1"
|
version: "1.10.1"
|
||||||
|
sprintf:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: sprintf
|
||||||
|
sha256: "1fc9ffe69d4df602376b52949af107d8f5703b77cda567c4d7d86a0693120f23"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "7.0.0"
|
||||||
stack_trace:
|
stack_trace:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -821,6 +1085,14 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.0.2"
|
version: "1.0.2"
|
||||||
|
toastification:
|
||||||
|
dependency: "direct main"
|
||||||
|
description:
|
||||||
|
name: toastification
|
||||||
|
sha256: "69db2bff425b484007409650d8bcd5ed1ce2e9666293ece74dcd917dacf23112"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "3.0.3"
|
||||||
typed_data:
|
typed_data:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -837,6 +1109,78 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.1.0"
|
version: "1.1.0"
|
||||||
|
url_launcher:
|
||||||
|
dependency: "direct main"
|
||||||
|
description:
|
||||||
|
name: url_launcher
|
||||||
|
sha256: f6a7e5c4835bb4e3026a04793a4199ca2d14c739ec378fdfe23fc8075d0439f8
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "6.3.2"
|
||||||
|
url_launcher_android:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: url_launcher_android
|
||||||
|
sha256: "69ee86740f2847b9a4ba6cffa74ed12ce500bbe2b07f3dc1e643439da60637b7"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "6.3.18"
|
||||||
|
url_launcher_ios:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: url_launcher_ios
|
||||||
|
sha256: d80b3f567a617cb923546034cc94bfe44eb15f989fe670b37f26abdb9d939cb7
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "6.3.4"
|
||||||
|
url_launcher_linux:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: url_launcher_linux
|
||||||
|
sha256: "4e9ba368772369e3e08f231d2301b4ef72b9ff87c31192ef471b380ef29a4935"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "3.2.1"
|
||||||
|
url_launcher_macos:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: url_launcher_macos
|
||||||
|
sha256: c043a77d6600ac9c38300567f33ef12b0ef4f4783a2c1f00231d2b1941fea13f
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "3.2.3"
|
||||||
|
url_launcher_platform_interface:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: url_launcher_platform_interface
|
||||||
|
sha256: "552f8a1e663569be95a8190206a38187b531910283c3e982193e4f2733f01029"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "2.3.2"
|
||||||
|
url_launcher_web:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: url_launcher_web
|
||||||
|
sha256: "4bd2b7b4dc4d4d0b94e5babfffbca8eac1a126c7f3d6ecbc1a11013faa3abba2"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "2.4.1"
|
||||||
|
url_launcher_windows:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: url_launcher_windows
|
||||||
|
sha256: "3284b6d2ac454cf34f114e1d3319866fdd1e19cdc329999057e44ffe936cfa77"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "3.1.4"
|
||||||
|
uuid:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: uuid
|
||||||
|
sha256: a5be9ef6618a7ac1e964353ef476418026db906c4facdedaa299b7a2e71690ff
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "4.5.1"
|
||||||
vector_math:
|
vector_math:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
|||||||
12
pubspec.yaml
12
pubspec.yaml
@ -48,6 +48,18 @@ dependencies:
|
|||||||
intl: ^0.20.2
|
intl: ^0.20.2
|
||||||
flutter_hooks: ^0.21.3+1
|
flutter_hooks: ^0.21.3+1
|
||||||
pinput: ^5.0.1
|
pinput: ^5.0.1
|
||||||
|
animated_bottom_navigation_bar: ^1.4.0
|
||||||
|
flutter_dotenv: ^6.0.0
|
||||||
|
jwt_decode: ^0.3.1
|
||||||
|
toastification: ^3.0.3
|
||||||
|
url_launcher: ^6.3.2
|
||||||
|
firebase_messaging: ^16.0.1
|
||||||
|
local_auth: ^2.3.0
|
||||||
|
google_sign_in: ^7.1.1
|
||||||
|
firebase_core: ^4.1.0
|
||||||
|
firebase_auth: ^6.0.2
|
||||||
|
firebase_app_check: ^0.4.0+1
|
||||||
|
package_info_plus: ^8.3.1
|
||||||
|
|
||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
flutter_test:
|
flutter_test:
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user