18 Commits

Author SHA1 Message Date
137945e7d2 Merge pull request 'Development' (#10) from Development into main
Reviewed-on: #10
2024-07-10 09:34:38 +00:00
cj201199
f8246d33ed login, forgot pass api integration 2024-07-10 15:02:09 +05:30
priyankahadpad
f9fca85bf5 Merge pull request #38 from WDI-Ideas/Development
login api integration
2024-07-09 14:48:35 +05:30
cj201199
5cb32f1152 conflict resolved 2024-07-09 14:48:21 +05:30
cj201199
bb3eec2081 login api integration 2024-07-09 14:46:28 +05:30
Shubham Shetty
c108aa7ddd Merge pull request #37 from WDI-Ideas/postapimethod
Postapimethod
2024-07-09 14:44:55 +05:30
Shubhamshirva
b547f96ec6 post api method created 2024-07-09 14:41:15 +05:30
Shubhamshirva
636f79fb60 Merge branch 'main' of https://github.com/WDI-Ideas/Regroup_flutter 2024-07-09 13:25:23 +05:30
priyankahadpad
7a33e1f2c0 Merge pull request #36 from WDI-Ideas/Development
validation on login and signup
2024-07-09 13:11:14 +05:30
cj201199
7c47c2ce24 validation on login and signup 2024-07-09 13:10:40 +05:30
Shubhamshirva
e6e84a058c Merge branch 'main' of https://github.com/WDI-Ideas/Regroup_flutter 2024-07-09 13:00:46 +05:30
priyankahadpad
1198c9b694 Merge pull request #35 from WDI-Ideas/Development
changes in community tab
2024-07-08 13:49:12 +05:30
cj201199
86b93fef5f changes in community tab 2024-07-08 13:48:26 +05:30
Kishan Bhuta
6fbd5ece0d Merge pull request #34 from WDI-Ideas/hotfixes
minor change
2024-07-08 12:22:20 +05:30
kishan06
9b9f2ed42e minor change 2024-07-08 12:21:39 +05:30
Shubhamshirva
db8fd0f98b Merge branch 'main' of https://github.com/WDI-Ideas/Regroup_flutter 2024-07-03 14:41:35 +05:30
Shubhamshirva
a6bbf734e9 Merge branch 'main' of https://github.com/WDI-Ideas/Regroup_flutter 2024-06-28 16:23:04 +05:30
Shubhamshirva
2ac83c5c37 Merge branch 'main' of http://git.wdipl.com/kishan.bhuta/Regroup 2024-06-14 19:28:56 +05:30
34 changed files with 1912 additions and 1000 deletions

View File

@@ -35,10 +35,21 @@ PODS:
- DKPhotoGallery/Resource (0.0.19):
- SDWebImage
- SwiftyGif
- FBAEMKit (16.3.1):
- FBSDKCoreKit_Basics (= 16.3.1)
- FBSDKCoreKit (16.3.1):
- FBAEMKit (= 16.3.1)
- FBSDKCoreKit_Basics (= 16.3.1)
- FBSDKCoreKit_Basics (16.3.1)
- FBSDKLoginKit (16.3.1):
- FBSDKCoreKit (= 16.3.1)
- file_picker (0.0.1):
- DKImagePickerController/PhotoGallery
- Flutter
- Flutter (1.0.0)
- flutter_facebook_auth (6.0.4):
- FBSDKLoginKit (~> 16.3.1)
- Flutter
- fluttertoast (0.0.2):
- Flutter
- Toast
@@ -79,6 +90,7 @@ DEPENDENCIES:
- device_info_plus (from `.symlinks/plugins/device_info_plus/ios`)
- file_picker (from `.symlinks/plugins/file_picker/ios`)
- Flutter (from `Flutter`)
- flutter_facebook_auth (from `.symlinks/plugins/flutter_facebook_auth/ios`)
- fluttertoast (from `.symlinks/plugins/fluttertoast/ios`)
- geolocator_apple (from `.symlinks/plugins/geolocator_apple/ios`)
- google_maps_flutter_ios (from `.symlinks/plugins/google_maps_flutter_ios/ios`)
@@ -93,6 +105,10 @@ SPEC REPOS:
trunk:
- DKImagePickerController
- DKPhotoGallery
- FBAEMKit
- FBSDKCoreKit
- FBSDKCoreKit_Basics
- FBSDKLoginKit
- GoogleMaps
- SDWebImage
- SwiftyGif
@@ -108,6 +124,8 @@ EXTERNAL SOURCES:
:path: ".symlinks/plugins/file_picker/ios"
Flutter:
:path: Flutter
flutter_facebook_auth:
:path: ".symlinks/plugins/flutter_facebook_auth/ios"
fluttertoast:
:path: ".symlinks/plugins/fluttertoast/ios"
geolocator_apple:
@@ -132,8 +150,13 @@ SPEC CHECKSUMS:
device_info_plus: c6fb39579d0f423935b0c9ce7ee2f44b71b9fce6
DKImagePickerController: 946cec48c7873164274ecc4624d19e3da4c1ef3c
DKPhotoGallery: b3834fecb755ee09a593d7c9e389d8b5d6deed60
FBAEMKit: 6c7b5eb77c96861bb59e040842c6e55bf39512ce
FBSDKCoreKit: 5e4dd478947ab1bcc887e8cfadeae0727af1a942
FBSDKCoreKit_Basics: cd7b5f5d1e8868c26706917919d058999ca672c3
FBSDKLoginKit: 572cca0bc6c90067ef197187697cb3b584310c52
file_picker: 09aa5ec1ab24135ccd7a1621c46c84134bfd6655
Flutter: f04841e97a9d0b0a8025694d0796dd46242b2854
Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7
flutter_facebook_auth: c8700ab1770f3d8e5e7456220e4f3bbcdb831454
fluttertoast: 9f2f8e81bb5ce18facb9748d7855bf5a756fe3db
geolocator_apple: 6cbaf322953988e009e5ecb481f07efece75c450
google_maps_flutter_ios: d1318b4ff711612cab16862d7a87e31a7403d458

View File

@@ -156,7 +156,7 @@
97C146E61CF9000F007C117D /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 1430;
LastUpgradeCheck = 1510;
ORGANIZATIONNAME = "";
TargetAttributes = {
97C146ED1CF9000F007C117D = {

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1430"
LastUpgradeVersion = "1510"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"

View File

@@ -11,7 +11,7 @@ GlassContainer bottomnavigationbar(MainController _mainController) {
width: double.infinity,
height: 100,
borderRadius: BorderRadius.circular(2),
blur: 6,
blur: 2,
opacity: 0.2,
gradient: LinearGradient(
begin: Alignment.topLeft,
@@ -202,7 +202,7 @@ GlassContainer bottomnavigationbar(MainController _mainController) {
))
],
),
label: 'Calender',
label: 'Calendar',
),
BottomNavigationBarItem(
icon: Image.asset(

View File

@@ -85,7 +85,7 @@ Widget commonGlassUIBlue({
required double height,
required Widget customWidget,
// required double border,
double mainOpacity = 0.05,
double mainOpacity = 1,
Color borderColor = const Color(0xff434A53),
required BorderRadius? borderRadius,
}) {
@@ -127,7 +127,7 @@ Widget commonGlassUI({
width: width,
height: height,
borderRadius: borderRadius,
blur: 6,
blur: 2,
opacity: mainOpacity,
gradient: LinearGradient(
begin: Alignment.topLeft,
@@ -144,3 +144,38 @@ Widget commonGlassUI({
border: Border.all(color: borderColor, width: borderwidth),
child: customWidget);
}
Widget commonContainer({
required double width,
required double height,
// required double border,
// double mainOpacity = 1,
double opacity1 = 0.04,
double opacity2 = 0.05,
Color borderColor = const Color(0xff434A53),
double borderwidth = 1.0,
BorderRadius? borderRadius,
required Widget customWidget,
BoxShape boxShape = BoxShape.rectangle,
}) {
return Container(
width: width,
height: height,
decoration: BoxDecoration(
borderRadius: borderRadius,
gradient: LinearGradient(
begin: Alignment.topLeft,
end: Alignment.bottomRight,
colors: [
Color(0xFFFFFFFF).withOpacity(opacity1),
const Color(0xFFFFFFFF).withOpacity(opacity2),
],
stops: const [
0.1,
1,
],
),
shape: boxShape,
border: Border.all(color: borderColor, width: borderwidth)),
child: customWidget);
}

View File

@@ -312,15 +312,25 @@ Widget stackReaction({
return Positioned(
top: 6.h,
left: index * 23.w,
child: commonGlassUI(
child: Container(
width: 30.w,
height: 30.h,
mainOpacity: 1,
opacity1: 0.05,
opacity2: 0.06,
borderRadius: BorderRadius.circular(100),
customWidget: Center(
decoration: BoxDecoration(
shape: BoxShape.circle,
gradient: LinearGradient(
begin: Alignment.topLeft,
end: Alignment.bottomRight,
colors: [
Color(0xFFFFFFFF).withOpacity(0.1),
const Color(0xFFFFFFFF).withOpacity(0.06),
],
stops: const [
0.1,
1,
],
),
border: Border.all(color: Color(0xFF1E3A46), width: 1.71)),
child: Center(
child: Image.asset(
containerImages[index],
height: 18.h,

11
lib/Common/api_urls.dart Normal file
View File

@@ -0,0 +1,11 @@
class ApiUrls {
static const baseUrl = "https://regroup.betadelivery.com/api/v1/";
static const getlogin = "${baseUrl}login";
}

View File

@@ -0,0 +1,4 @@
abstract class BaseApiServices {
Future<dynamic> getApi(String url);
Future<dynamic> postApi(var data, String url);
}

View File

@@ -5,17 +5,25 @@ import 'package:dio/dio.dart';
import 'package:flutter/foundation.dart';
import 'package:get/get.dart' hide Response;
import 'package:regroup/Global.dart';
import 'package:regroup/Utils/base_manager.dart';
import 'package:regroup/Common/base_manager.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:http/http.dart' as http;
import 'entry_point_controller.dart';
import '../../entry_point_controller.dart';
class NetworkApiServices {
// String basicAuth = 'Basic ' +
// base64.encode(
// utf8.encode('RegroupUserName:71%@L%es^bUX94`J9XT*@bh,._WWM{\$%^^&&'));
class NetworkApi {
Dio dio = Dio();
final controllerEntryPoint = Get.put(EntryPointController());
String basicAuth = 'Basic ' +
base64.encode(
utf8.encode('RegroupUserName:71%@L%es^bUX94`J9XT*@bh,._WWM{\$%^^&&'));
Future<ResponseData> getApi(String url) async {
if (kDebugMode) {
print("api url is >>> $url");
@@ -51,45 +59,136 @@ class NetworkApi {
}
}
Future<ResponseData> postApi({data, required String url}) async {
// Future<ResponseData> postApi(
// data,
// String url,
// {bool optionalpar = false}
// ) async {
// if (kDebugMode) {
// print("data >>> $data");
// print("api url is >>> $url");
// }
// Response response;
// SharedPreferences prefs = await SharedPreferences.getInstance();
// // ignore: unused_local_variable
// String? token = prefs.getString('token').toString();
// print("token is $token");
// log(token.toString());
// try {
// response = await dio.post(url,
// data: data,
// options: optionalpar
// ?
// Options(
// headers: {
// "authorization": basicAuth,
// },
// )
// :
// Options(
// headers: {'authorization': basicAuth, 'access-token': token},
// ),
// );
// log(response.toString());
// } on Exception catch (e) {
// if (e is DioException) {
// log(e.response.toString());
// }
// return ResponseData<dynamic>(
// 'Opps something went wrong', ResponseStatus.FAILED);
// }
// // if (kDebugMode) {
// // print(response);
// // }
// // print("response in post $response");
// if (response.statusCode == 200) {
// // print(response.data);
// return ResponseData<dynamic>("success", ResponseStatus.SUCCESS,
// data: response.data);
// } else {
// try {
// return ResponseData<dynamic>(
// response.data['message'].toString(), ResponseStatus.FAILED);
// } catch (_) {
// return ResponseData<dynamic>(
// response.statusMessage!, ResponseStatus.FAILED);
// }
// }
// }
//New post api
Future<ResponseData> postApi(data, String url,
{bool optionalpar = false}) async {
if (kDebugMode) {
print("data >>> $data");
print("api url is >>> $url");
}
Response response;
SharedPreferences prefs = await SharedPreferences.getInstance();
// ignore: unused_local_variable
String? token = prefs.getString('token').toString();
print("token is $token");
String? token = prefs.getString('access-token');
log(token.toString());
log(basicAuth);
try {
response = await dio.post(url,
data: data,
options: Options(
headers: {
"authorization": "Bearer $token",
'content-Type': 'application/json',
"Accept": 'application/json'
},
));
response = await dio.post(
url,
data: data,
options: optionalpar
? Options(
headers: {
"authorization": basicAuth,
},
)
: Options(
headers: {
'authorization': basicAuth,
// 'access-token': token
},
),
);
log(response.toString());
} on Exception catch (e) {
if (e is DioException) {
log(e.response.toString());
if (e.response == null) {
return ResponseData<dynamic>(
'Oops something Went Wrong, Please try again!',
ResponseStatus.FAILED,
);
}
if (e.response!.statusCode == 401) {
prefs.remove('token');
prefs.remove('refreshToken');
// Get.toNamed(RouteName.login);
return ResponseData<dynamic>(
'Oops something Went Wrong, Please try again!',
ResponseStatus.FAILED,
);
}
if (e.response!.statusCode == 403) {
return ResponseData<dynamic>(
e.response!.statusMessage!, ResponseStatus.PRIVATE,
data: e.response!.data);
}
}
return ResponseData<dynamic>(
'Opps something went wrong', ResponseStatus.FAILED);
'Oops something Went Wrong',
ResponseStatus.FAILED,
);
}
// if (kDebugMode) {
// print(response);
// }
// print("response in post $response");
if (response.statusCode == 200) {
// print(response.data);
if (response.statusCode == 200 || response.statusCode == 201) {
return ResponseData<dynamic>("success", ResponseStatus.SUCCESS,
data: response.data);
} else if (response.statusCode == 203) {
print(response.data);
return ResponseData<dynamic>("success", ResponseStatus.PRIVATE,
data: response.data);
} else {
try {
return ResponseData<dynamic>(
@@ -196,17 +295,18 @@ class NetworkApi {
var resp = await response.stream.bytesToString();
var jsonResp = jsonDecode(resp);
print(jsonResp);
var errorMessage = jsonResp["errors"]["email2"].join(", ") + "\n" +
jsonResp["errors"]["contact_number2"].join(", ");
var errorMessage = jsonResp["errors"]["email2"].join(", ") +
"\n" +
jsonResp["errors"]["contact_number2"].join(", ");
// return ResponseData<dynamic>(
// jsonResp["errors"][0]["email2"] +
// jsonResp["errors"][0]["contact_number2"],
// ResponseStatus.PRIVATE,
// );
return ResponseData<String>(
errorMessage,
ResponseStatus.PRIVATE,
);
return ResponseData<String>(
errorMessage,
ResponseStatus.PRIVATE,
);
} else if (response.statusCode == 500) {
var resp = await response.stream.bytesToString();
var jsonResp = jsonDecode(resp);

View File

@@ -1,5 +1,6 @@
import 'package:geolocator/geolocator.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';
import 'package:shared_preferences/shared_preferences.dart';
LatLng? latlong;
@@ -25,3 +26,16 @@ getLocation() async {
print('done');
}
setname() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
String? token = prefs.getString('token');
if (token != null) {
// await ProfileAPI().getApi();
// prefs.setString('email', getProfileObj!.data!.email!);
// prefs.setString('profile_img', getProfileObj!.data!.profilePhoto!);
// prefs.setString('firstName', getProfileObj!.data!.firstName!);
// prefs.setString('phoneNo', getProfileObj!.data!.phoneNo ?? "");
// prefs.setInt('complete', getProfileObj!.data!.profileComplete ?? 0);
}
}

View File

@@ -58,9 +58,9 @@ class _CalenderTabState extends State<CalenderTab> {
List<Appointment>? _appointments;
// final List<String> _nameCollection = <String>[];
// final List<String> _userImages = <String>[];
DateTime? _startDate;
DateTime? _endDate;
bool _isRangeSelection = false;
// DateTime? _startDate;
// DateTime? _endDate;
// bool _isRangeSelection = false;
@override
void initState() {
super.initState();
@@ -257,7 +257,7 @@ class _CalenderTabState extends State<CalenderTab> {
appointmentTextStyle: TextStyle(color: Colors.white),
headerStyle: CalendarHeaderStyle(
textStyle: TextStyle(
color: Colors.blue,
color: Color(0xFFD90B2E),
)),
// blackoutDatesTextStyle: TextStyle(color: Colors.white),
@@ -282,7 +282,6 @@ class _CalenderTabState extends State<CalenderTab> {
allowViewNavigation: true,
allowDragAndDrop: true,
showDatePickerButton: true,
monthViewSettings: MonthViewSettings(
navigationDirection: MonthNavigationDirection.horizontal,
),
@@ -360,20 +359,25 @@ class _CalenderTabState extends State<CalenderTab> {
),
Positioned(
top: 6.h,
left: 190.w,
left: 100.w,
child: InkWell(
onTap: () {
Get.toNamed(RouteName.availability);
},
child: Container(
height: 25.h,
width: 50.w,
decoration: BoxDecoration(
border: Border.all(
color: Colors.blue,
color: Color(0xFFD90B2E),
),
borderRadius: BorderRadius.circular(15.r)),
child: Center(child: text10400white("view")),
child: Padding(
padding: EdgeInsets.symmetric(
horizontal: 10.w,
),
child:
Center(child: text10400white("view availability")),
),
)
// Image.asset(
@@ -555,7 +559,7 @@ class _CalenderTabState extends State<CalenderTab> {
appointmentTextStyle: TextStyle(color: Colors.white),
headerStyle: CalendarHeaderStyle(
textStyle: TextStyle(
color: Colors.blue,
color: Color(0xFFD90B2E),
)),
// blackoutDatesTextStyle: TextStyle(color: Colors.white),
@@ -579,7 +583,7 @@ class _CalenderTabState extends State<CalenderTab> {
showNavigationArrow: true,
allowViewNavigation: true,
allowDragAndDrop: true,
// showDatePickerButton: true,
showDatePickerButton: true,
monthViewSettings: MonthViewSettings(
navigationDirection: MonthNavigationDirection.horizontal,
),
@@ -646,20 +650,6 @@ class _CalenderTabState extends State<CalenderTab> {
);
}),
),
Positioned(
top: 8.h,
right: 110.w,
child: InkWell(
onTap: () {
Get.toNamed(RouteName.availability);
},
child: Image.asset(
"assets/images/png/calender.png",
color: Colors.blue,
height: 18.h,
width: 18.w,
),
))
]),
// SfCalendar(

File diff suppressed because it is too large Load Diff

View File

@@ -315,33 +315,35 @@ class _GroupDetailState extends State<GroupDetail> {
sizedBoxHeight(16.h),
Row(
children: [
commonGlassContainer(
width: 35.w,
height: 35.h,
borderradius: 100,
opacity1: 0.24,
opacity2: 0.24,
customWidget: Center(
child: Image.asset(
"assets/images/png/community 1 (traced).png",
height: 20.h,
width: 20.w),
),
border: 0.5),
commonContainer(
width: 35.w,
height: 35.h,
boxShape: BoxShape.circle,
opacity1: 0.24,
opacity2: 0.24,
borderwidth: 0.5,
customWidget: Center(
child: Image.asset(
"assets/images/png/community 1 (traced).png",
height: 20.h,
width: 20.w),
),
),
sizedBoxWidth(7.w),
text16w400_FCFCFCblur("The athlectic town"),
sizedBoxWidth(20.w),
commonGlassContainer(
width: 35.w,
height: 35.h,
opacity1: 0.24,
opacity2: 0.24,
borderradius: 100,
customWidget: Center(
child: Image.asset("assets/images/png/img12.png",
height: 20.h, width: 20.w),
),
border: 0.5),
commonContainer(
width: 35.w,
height: 35.h,
boxShape: BoxShape.circle,
opacity1: 0.24,
opacity2: 0.24,
borderwidth: 0.5,
customWidget: Center(
child: Image.asset("assets/images/png/img12.png",
height: 20.h, width: 20.w),
),
),
sizedBoxWidth(7.w),
text16w400_FCFCFCblur("Public"),
],
@@ -349,19 +351,20 @@ class _GroupDetailState extends State<GroupDetail> {
sizedBoxHeight(25.h),
Row(
children: [
commonGlassContainer(
width: 35.w,
height: 35.h,
opacity1: 0.24,
opacity2: 0.24,
borderradius: 100,
customWidget: Center(
child: Image.asset(
"assets/images/png/Vector (4).png",
height: 20.h,
width: 20.w),
),
border: 0.5),
commonContainer(
width: 35.w,
height: 35.h,
boxShape: BoxShape.circle,
opacity1: 0.24,
opacity2: 0.24,
borderwidth: 0.5,
customWidget: Center(
child: Image.asset(
"assets/images/png/Vector (4).png",
height: 20.h,
width: 20.w),
),
),
sizedBoxWidth(7.w),
text16w400_FCFCFCblur("Rowing, Football, Swimming"),
],
@@ -594,11 +597,10 @@ class _GroupDetailState extends State<GroupDetail> {
}
// MediaQuery.of(context).size.height
return commonGlassContainerblue(
return commonGlassUIBlue(
width: double.infinity,
height: 610.h,
border: 0,
borderradius: 1,
borderRadius: BorderRadius.circular(1),
customWidget: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
@@ -790,13 +792,13 @@ class _GroupDetailState extends State<GroupDetail> {
]),
),
Spacer(),
commonGlassContainer(
border: 0.43,
commonContainer(
width: 30.w,
height: 30.h,
opacity1: 0.05,
opacity2: 0.06,
borderradius: 100,
opacity1: 0.24,
opacity2: 0.24,
boxShape: BoxShape.circle,
borderwidth: 0.43,
customWidget: Center(
child: Image.asset(
'assets/images/png/Frame 1000004088.png',
@@ -808,13 +810,13 @@ class _GroupDetailState extends State<GroupDetail> {
sizedBoxWidth(12.w),
text14w400_FCFCFC('20'),
sizedBoxWidth(20.w),
commonGlassContainer(
border: 0.43,
commonContainer(
width: 30.w,
height: 30.h,
borderradius: 100,
opacity1: 0.05,
opacity2: 0.06,
opacity1: 0.24,
opacity2: 0.24,
boxShape: BoxShape.circle,
borderwidth: 0.43,
customWidget: Center(
child: Image.asset(
'assets/images/png/Vector (1).png',
@@ -950,11 +952,11 @@ class _GroupDetailState extends State<GroupDetail> {
}
Widget containertile({required String text}) {
return commonGlassContainer(
border: 1,
return commonContainer(
width: 100.w,
height: 30.h,
borderradius: 30.r,
borderRadius: BorderRadius.circular(30.r),
borderwidth: 1,
borderColor: Color(0xFFD90B2E),
customWidget: Padding(
padding: EdgeInsets.symmetric(horizontal: 10.w),
@@ -966,17 +968,16 @@ class _GroupDetailState extends State<GroupDetail> {
return Column(
children: [
sizedBoxHeight(40.h),
commonGlassContainer(
commonGlassUI(
width: double.infinity,
height: 500.h,
borderradius: 1,
border: 0,
borderRadius: BorderRadius.circular(1),
customWidget: SfCalendar(
view: CalendarView.day,
appointmentTextStyle: TextStyle(color: Colors.white),
headerStyle: CalendarHeaderStyle(
textStyle: TextStyle(
color: Colors.blue,
color: Color(0xFFD90B2E),
)),
// blackoutDatesTextStyle: TextStyle(color: Colors.white),

View File

@@ -168,11 +168,11 @@ class _GroupTabState extends State<GroupTab> {
padding: EdgeInsets.only(bottom: 25.h),
child: GestureDetector(
onTap: ontap,
child: commonGlassContainer(
border: 0.9,
child: commonGlassUI(
width: double.infinity,
height: 162.h,
borderradius: 10.r,
borderwidth: 0.9,
borderRadius: BorderRadius.circular(10.r),
customWidget: Padding(
padding: EdgeInsets.symmetric(horizontal: 16.w, vertical: 16.h),
child: Column(

View File

@@ -152,7 +152,7 @@ class _NewPostState extends State<NewPost> {
sizedBoxHeight(20.h),
text16w400_FCFCFC("Tags"),
sizedBoxHeight(18.h),
CustomDropDownTag(
CustomDropDownTag1(
header: "Enter tags",
title: "Enter tags",
listData: [

View File

@@ -46,23 +46,28 @@ class _RequestedGroupsState extends State<RequestedGroups> {
Container(
decoration: const BoxDecoration(
image: DecorationImage(
image: AssetImage("assets/images/png/Ellipse 1496.png"), fit: BoxFit.fill)),
image: AssetImage("assets/images/png/Ellipse 1496.png"),
fit: BoxFit.fill)),
),
Column(crossAxisAlignment: CrossAxisAlignment.start, children: [
sizedBoxHeight(20.h),
ListView.builder(
shrinkWrap: true,
physics: BouncingScrollPhysics(),
itemCount: groupData.length,
itemBuilder: (context, index) {
return groupCard(
ontap: () {},
imagepath: groupData[index]['imagePath'],
title: groupData[index]['text'],
members: groupData[index]['members']);
},
)
])
Padding(
padding: EdgeInsets.symmetric(horizontal: 16.w),
child:
Column(crossAxisAlignment: CrossAxisAlignment.start, children: [
sizedBoxHeight(20.h),
ListView.builder(
shrinkWrap: true,
physics: BouncingScrollPhysics(),
itemCount: groupData.length,
itemBuilder: (context, index) {
return groupCard(
ontap: () {},
imagepath: groupData[index]['imagePath'],
title: groupData[index]['text'],
members: groupData[index]['members']);
},
)
]),
)
]));
}
@@ -76,11 +81,11 @@ class _RequestedGroupsState extends State<RequestedGroups> {
padding: EdgeInsets.only(bottom: 25.h),
child: GestureDetector(
onTap: ontap,
child: commonGlassContainer(
border: 0.9,
child: commonGlassUI(
width: double.infinity,
height: 162.h,
borderradius: 10.r,
borderwidth: 0.9,
borderRadius: BorderRadius.circular(10.r),
customWidget: Padding(
padding: EdgeInsets.symmetric(horizontal: 16.w, vertical: 16.h),
child: Column(

View File

@@ -257,20 +257,20 @@ class _ProfileTabState extends State<ProfileTab> {
sizedBoxHeight(25.h),
Row(
children: [
commonGlassUI(
width: 25.w,
height: 25.h,
opacity1: 0.24,
opacity2: 0.24,
mainOpacity: 1,
borderRadius: BorderRadius.circular(100),
customWidget: Center(
child: Image.asset(
"assets/images/png/Group 58645.png",
height: 12.h,
width: 12.w,
)),
borderwidth: 0.5),
commonContainer(
width: 25.w,
height: 25.h,
opacity1: 0.26,
opacity2: 0.26,
borderwidth: 0.5,
boxShape: BoxShape.circle,
customWidget: Center(
child: Image.asset(
"assets/images/png/Group 58645.png",
height: 12.h,
width: 12.w,
)),
),
sizedBoxWidth(12.w),
text14400whiteblur(
"Elm street london, United Kingdom"),
@@ -279,14 +279,13 @@ class _ProfileTabState extends State<ProfileTab> {
sizedBoxHeight(20.h),
Row(
children: [
commonGlassUI(
commonContainer(
width: 25.w,
height: 25.h,
opacity1: 0.24,
opacity2: 0.24,
mainOpacity: 1,
borderRadius: BorderRadius.circular(100),
opacity1: 0.26,
opacity2: 0.26,
borderwidth: 0.5,
boxShape: BoxShape.circle,
customWidget: Center(
child: Image.asset(
"assets/images/png/Vector (4).png",
@@ -434,34 +433,19 @@ class _ProfileTabState extends State<ProfileTab> {
children: [
sizedBoxHeight(20.h),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
commonGlassUI(
width: 40.w,
height: 40.h,
opacity1: 0.5,
opacity2: 0.4,
borderwidth: 0.5,
borderRadius: BorderRadius.circular(100.r),
customWidget: Center(
child: Image.asset(
'assets/images/png/ph_arrow-up-thin.png',
height: 25.h,
width: 25.w,
)),
),
Spacer(),
InkWell(
onTap: () {
Get.toNamed(RouteName.settings);
},
child: commonGlassContainer(
border: 0.5,
child: commonContainer(
width: 40.w,
height: 40.h,
borderradius: 100,
borderwidth: 0.5,
boxShape: BoxShape.circle,
opacity1: 0.5,
opacity2: 0.4,
opacity2: 0.6,
customWidget: Center(
child: Image.asset(
'assets/images/png/setting2.png',
@@ -749,13 +733,13 @@ class _ProfileTabState extends State<ProfileTab> {
'assets/images/png/party-popper 2.png'
]),
Spacer(),
commonGlassUI(
commonContainer(
width: 30.w,
height: 30.h,
opacity1: 0.05,
opacity2: 0.06,
opacity1: 0.2,
opacity2: 0.2,
borderwidth: 0.43,
borderRadius: BorderRadius.circular(100),
boxShape: BoxShape.circle,
customWidget: Center(
child: Image.asset(
'assets/images/png/Frame 1000004088.png',
@@ -767,13 +751,13 @@ class _ProfileTabState extends State<ProfileTab> {
sizedBoxWidth(12.w),
text14w400_FCFCFC('20'),
sizedBoxWidth(20.w),
commonGlassUI(
commonContainer(
width: 30.w,
height: 30.h,
opacity1: 0.05,
opacity2: 0.06,
opacity1: 0.2,
opacity2: 0.2,
borderwidth: 0.43,
borderRadius: BorderRadius.circular(100),
boxShape: BoxShape.circle,
customWidget: Center(
child: Image.asset(
'assets/images/png/Vector (1).png',
@@ -904,12 +888,12 @@ class _ProfileTabState extends State<ProfileTab> {
}
Widget containertile({required String text}) {
return commonGlassUI(
return commonContainer(
width: 100.w,
height: 30.h,
borderRadius: BorderRadius.circular(30.r),
borderColor: Color(0xFFD90B2E),
borderwidth: 0.9,
borderRadius: BorderRadius.circular(30.r),
customWidget: Padding(
padding: EdgeInsets.symmetric(horizontal: 10.w),
child: Center(child: text14w400_FCFCFC(text)),

View File

@@ -102,51 +102,50 @@ class _MyCommunityState extends State<MyCommunity> {
),
),
body: Stack(children: [
Container(
Container(
decoration: const BoxDecoration(
image: DecorationImage(
image: AssetImage("assets/images/png/Ellipse 1496.png"),
fit: BoxFit.fill)),
), Padding(
padding: EdgeInsets.symmetric(horizontal: 16.w),
child: SingleChildScrollView(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
text18w700_FCFCFC("Joined communities"),
sizedBoxHeight(15.h),
Column(
children: List.generate(JoinedcommunityData.length,
(index) {
return communityCard(
ontap: () {
Get.toNamed(RouteName.communityDetails);
},
imagepath: JoinedcommunityData[index]
['imagePath'],
title: JoinedcommunityData[index]['text'],
members: JoinedcommunityData[index]
['members'],
index: JoinedcommunityData[index]['index']);
}),
),
text18w700_FCFCFC("Requested communities"),
sizedBoxHeight(20.h),
Column(
children: List.generate(RequestcommunityData.length,
(index) {
return communityCard(
ontap: () {},
imagepath: RequestcommunityData[index]
['imagePath'],
title: RequestcommunityData[index]['text'],
members: RequestcommunityData[index]
['members'],
index: RequestcommunityData[index]['index']);
}),
)
]),
))
),
Padding(
padding: EdgeInsets.symmetric(horizontal: 16.w),
child: SingleChildScrollView(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
text18w700_FCFCFC("Joined communities"),
sizedBoxHeight(15.h),
Column(
children:
List.generate(JoinedcommunityData.length, (index) {
return communityCard(
ontap: () {
Get.toNamed(RouteName.communityDetails);
},
imagepath: JoinedcommunityData[index]
['imagePath'],
title: JoinedcommunityData[index]['text'],
members: JoinedcommunityData[index]['members'],
index: JoinedcommunityData[index]['index']);
}),
),
text18w700_FCFCFC("Requested communities"),
sizedBoxHeight(20.h),
Column(
children:
List.generate(RequestcommunityData.length, (index) {
return communityCard(
ontap: () {},
imagepath: RequestcommunityData[index]
['imagePath'],
title: RequestcommunityData[index]['text'],
members: RequestcommunityData[index]['members'],
index: RequestcommunityData[index]['index']);
}),
)
]),
))
]));
}
@@ -161,11 +160,11 @@ class _MyCommunityState extends State<MyCommunity> {
padding: EdgeInsets.only(bottom: 25.h),
child: GestureDetector(
onTap: ontap,
child: commonGlassContainer(
border: 0.9,
child: commonGlassUI(
width: double.infinity,
height: 162.h,
borderradius: 10.r,
borderwidth: 0.9,
borderRadius: BorderRadius.circular(10.r),
customWidget: Padding(
padding: EdgeInsets.symmetric(horizontal: 16.w, vertical: 16.h),
child: Column(

View File

@@ -1,13 +1,12 @@
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:flutter_svg/svg.dart';
import 'package:get/get.dart';
import 'package:regroup/Common/CommonGlassmorphism.dart';
import 'package:regroup/Common/CommonWidget.dart';
import 'package:regroup/Utils/Common/sized_box.dart';
import 'package:regroup/Utils/texts.dart';
import 'package:regroup/resources/routes/route_name.dart';
import 'package:shared_preferences/shared_preferences.dart';
class SideMenu extends StatefulWidget {
const SideMenu({super.key});
@@ -78,75 +77,75 @@ class _SideMenuState extends State<SideMenu> {
child: ListView(children: [
Padding(
padding: EdgeInsets.symmetric(horizontal: 10.w),
child: commonGlassContainer(
width: double.infinity,
height: 330.h,
borderradius: 10,
customWidget: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: EdgeInsets.symmetric(
horizontal: 16.w, vertical: 12.h),
child: Row(
children: [
text16w400_FCFCFC("Pinned"),
Spacer(),
Icon(
Icons.arrow_drop_up,
color: Colors.white,
size: 25,
)
],
),
child: commonGlassUI(
width: double.infinity,
height: 330.h,
borderRadius: BorderRadius.circular(10.r),
customWidget: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: EdgeInsets.symmetric(
horizontal: 16.w, vertical: 12.h),
child: Row(
children: [
text16w400_FCFCFC("Pinned"),
Spacer(),
Icon(
Icons.arrow_drop_up,
color: Colors.white,
size: 25,
)
],
),
commonDivider(),
sizedBoxHeight(10.h),
firstRowTile(
text: "Row bridge",
leadingimage:
"assets/images/png/sidemenu/rowing 1 (traced).png",
index: 1),
firstRowTile(
text: "Advice",
leadingimage:
"assets/images/png/sidemenu/solar_cloud-outline.png",
index: 2),
firstRowTile(
text: "Crush",
leadingimage:
"assets/images/png/sidemenu/Vector (4).png",
index: 3),
ListTile(
leading: CircleAvatar(
radius: 15.r,
foregroundImage: AssetImage(
"assets/images/png/sidemenu/Ellipse 52.png"),
),
title: text14w400_FCFCFC("Ryan Dorwart"),
trailing: Image.asset(
"assets/images/png/sidemenu/f7_pin-fill (1).png",
width: 19.w,
height: 19.h,
),
onTap: () {},
),
commonDivider(),
sizedBoxHeight(10.h),
firstRowTile(
text: "Row bridge",
leadingimage:
"assets/images/png/sidemenu/rowing 1 (traced).png",
index: 1),
firstRowTile(
text: "Advice",
leadingimage:
"assets/images/png/sidemenu/solar_cloud-outline.png",
index: 2),
firstRowTile(
text: "Crush",
leadingimage:
"assets/images/png/sidemenu/Vector (4).png",
index: 3),
ListTile(
leading: CircleAvatar(
radius: 15.r,
foregroundImage: AssetImage(
"assets/images/png/sidemenu/Ellipse 52.png"),
),
ListTile(
leading: CircleAvatar(
radius: 15.r,
foregroundImage: AssetImage(
"assets/images/png/sidemenu/Ellipse 53.png"),
),
title: text14w400_FCFCFC("Ahmad Rhiel Madsen"),
trailing: Image.asset(
"assets/images/png/sidemenu/f7_pin-fill (1).png",
width: 19.w,
height: 19.h,
),
onTap: () {},
title: text14w400_FCFCFC("Ryan Dorwart"),
trailing: Image.asset(
"assets/images/png/sidemenu/f7_pin-fill (1).png",
width: 19.w,
height: 19.h,
),
]),
border: 1),
onTap: () {},
),
ListTile(
leading: CircleAvatar(
radius: 15.r,
foregroundImage: AssetImage(
"assets/images/png/sidemenu/Ellipse 53.png"),
),
title: text14w400_FCFCFC("Ahmad Rhiel Madsen"),
trailing: Image.asset(
"assets/images/png/sidemenu/f7_pin-fill (1).png",
width: 19.w,
height: 19.h,
),
onTap: () {},
),
]),
),
),
sizedBoxHeight(18.h),
Padding(
@@ -366,11 +365,11 @@ class _SideMenuState extends State<SideMenu> {
required int index,
}) {
return ListTile(
leading: commonGlassContainer(
border: 0.9,
leading: commonContainer(
width: 29.w,
height: 29.h,
borderradius: 100,
borderwidth: 0.9,
boxShape: BoxShape.circle,
customWidget: Center(
child: Image.asset(
leadingimage,

View File

@@ -0,0 +1,45 @@
class LoginModel {
String? status;
int? statusCode;
String? message;
Data? data;
LoginModel({this.status, this.statusCode, this.message, this.data});
LoginModel.fromJson(Map<String, dynamic> json) {
status = json['status'];
statusCode = json['status_code'];
message = json['message'];
data = json['data'] != null ? new Data.fromJson(json['data']) : null;
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['status'] = this.status;
data['status_code'] = this.statusCode;
data['message'] = this.message;
if (this.data != null) {
data['data'] = this.data!.toJson();
}
return data;
}
}
class Data {
String? accessToken;
int? id;
Data({this.accessToken, this.id});
Data.fromJson(Map<String, dynamic> json) {
accessToken = json['access-token'];
id = json['id'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['access-token'] = this.accessToken;
data['id'] = this.id;
return data;
}
}

View File

@@ -1,19 +1,19 @@
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:get/get.dart';
import 'package:glassmorphism/glassmorphism.dart';
import 'package:regroup/Common/base_manager.dart';
import 'package:regroup/Login/ViewModel/LoginApi.dart';
import 'package:regroup/Utils/Common/CustomNextButton.dart';
import 'package:regroup/Utils/Common/CustomTextformfield.dart';
import 'package:regroup/Utils/Common/blureffect.dart';
import 'package:regroup/Utils/Common/sized_box.dart';
import 'package:regroup/Utils/texts.dart';
import 'package:regroup/resources/routes/route_name.dart';
import 'package:remove_emoji_input_formatter/remove_emoji_input_formatter.dart';
import 'package:show_fps/show_fps.dart';
import 'package:flutter_facebook_auth/flutter_facebook_auth.dart';
import 'package:regroup/Common/global.dart' as global;
// import 'package:regroup/Common/global.dart' as global;
class LoginScreen extends StatefulWidget {
const LoginScreen({super.key});
@@ -26,11 +26,13 @@ class _LoginScreenState extends State<LoginScreen> {
Map<String, dynamic>? _userData;
AccessToken? _accessToken;
bool _checking = true;
final TextEditingController _email = TextEditingController();
final TextEditingController _emailController = TextEditingController();
RxBool isObscured = true.obs;
final TextEditingController _password = TextEditingController();
final TextEditingController _passwordController = TextEditingController();
// final GlobalKey<FormState> _form = GlobalKey<FormState>();
// RxString errormsg = ''.obs;
// RxString errormsgpass = ''.obs;
@override
void initState() {
// TODO: implement initState
@@ -38,8 +40,8 @@ class _LoginScreenState extends State<LoginScreen> {
super.initState();
}
_checkIfisLoggedIn() async {
//user token
_checkIfisLoggedIn() async {
//user token
final accessToken = await FacebookAuth.instance.accessToken;
setState(() {
@@ -56,13 +58,14 @@ class _LoginScreenState extends State<LoginScreen> {
_userData = userData;
});
} else {
print("/////////////////////////////////////////check");
print("/////////////////////////////////////////check");
print("not worked");
_login();
}
}
_login() async {
_login() async {
final LoginResult result = await FacebookAuth.instance.login();
if (result.status == LoginStatus.success) {
@@ -86,6 +89,75 @@ class _LoginScreenState extends State<LoginScreen> {
setState(() {});
}
_logincheck() async {
if (_emailController.text.isBlank! || _passwordController.text.isBlank!) {
Get.snackbar(
'Error',
'Enter your credentials',
snackPosition: SnackPosition.BOTTOM,
backgroundColor: Colors.red,
colorText: Colors.white,
);
} else if (!_emailController.text.isEmail) {
Get.snackbar(
'Error',
'Enter a valid e-mail address',
snackPosition: SnackPosition.BOTTOM,
backgroundColor: Colors.red,
colorText: Colors.white,
);
} else {
Map<String, String> updata = {
"email_address": _emailController.text,
"password": _passwordController.text,
// "access-token" : ""
//
// "player_id": global.player_id!,
};
final data = await LoginAPI().loginApi(updata);
if (data.status == ResponseStatus.SUCCESS) {
// await global.setname();
Get.snackbar(
"Success!",
'Login successful!',
duration: Duration(seconds: 2),
colorText: Colors.white,
backgroundColor: Colors.green,
margin: EdgeInsets.all(8),
snackStyle: SnackStyle.FLOATING,
snackPosition: SnackPosition.BOTTOM,
);
Get.toNamed(RouteName.mainscreen);
} else if (data.status == ResponseStatus.FAILED) {
Get.snackbar(
"Error!",
data.message,
duration: Duration(seconds: 2),
colorText: Colors.white,
backgroundColor: Colors.red,
margin: EdgeInsets.all(8),
snackStyle: SnackStyle.FLOATING,
snackPosition: SnackPosition.BOTTOM,
);
// _controller.isTextFieldEnabled.value = true;
} else {
// btnController.reset();
Get.snackbar(
"Error!",
data.data['message'],
duration: Duration(seconds: 2),
colorText: Colors.white,
backgroundColor: Colors.red,
margin: EdgeInsets.all(8),
snackStyle: SnackStyle.FLOATING,
snackPosition: SnackPosition.BOTTOM,
);
// _controller.isTextFieldEnabled.value = true;
}
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
@@ -101,221 +173,193 @@ class _LoginScreenState extends State<LoginScreen> {
image: AssetImage("assets/images/png/Choice screen.png"),
fit: BoxFit.cover)),
),
Center(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
SizedBox(
height: 150.h,
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
SizedBox(
height: 150.h,
),
Padding(
padding: EdgeInsets.symmetric(horizontal: 16.w),
child: Align(
alignment: Alignment.center,
child: Container(
width: 107.w,
height: 70.h,
child: SvgPicture.asset(
"assets/images/svg/onboarding2.svg",
fit: BoxFit.cover,
),
),
),
Padding(
),
sizedBoxHeight(20.h),
Align(
alignment: Alignment.center,
child: text22400FCFCFC("Find your community")),
sizedBoxHeight(40.h),
Expanded(
child: Padding(
padding: EdgeInsets.symmetric(horizontal: 16.w),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Align(
alignment: Alignment.center,
child: Container(
width: 107.w,
height: 70.h,
child: SvgPicture.asset(
"assets/images/svg/onboarding2.svg",
fit: BoxFit.cover,
child: SingleChildScrollView(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
text16400white('Email address'),
sizedBoxHeight(10.h),
CustomTextFormField(
textEditingController: _emailController,
hintText: "Enter your email address",
leadingIcon:
// const Icon(Icons.mail_outline),
SizedBox(
width: 22.w,
height: 17.h,
child: Image.asset(
'assets/images/png/mail.png',
width: 22.w,
height: 17.h,
),
),
// validationMessage: errormsg.value,
validator: (value) {
if (value!.isEmpty) {
return 'Enter your e-mail address';
}
if (!RegExp(
r'^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$')
.hasMatch(value)) {
return 'Enter a valid e-mail address';
}
return null;
},
// onInput: (p0) {
// if (p0!.isEmpty) {
// errormsg.value = 'Enter your e-mail address';
// }
// if (!RegExp(
// r'^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$')
// .hasMatch(p0!)) {
// errormsg.value = 'Enter a valid e-mail address';
// }
// return null;
// },
// validatorText: "Email Id",
inputFormatters: [
LengthLimitingTextInputFormatter(30),
RemoveEmojiInputFormatter()
],
),
),
sizedBoxHeight(20.h),
Align(
alignment: Alignment.center,
child: text22400FCFCFC("Find your community")),
sizedBoxHeight(40.h),
text16400white('Email address'),
sizedBoxHeight(10.h),
CustomTextFormField(
textEditingController: _email,
hintText: "Enter your email address",
leadingIcon:
// const Icon(Icons.mail_outline),
SizedBox(
width: 22.w,
height: 17.h,
child: Image.asset(
'assets/images/png/mail.png',
sizedBoxHeight(10.h),
text16400white('Password'),
sizedBoxHeight(10.h),
CustomTextFormField(
isInputPassword: true,
textEditingController: _passwordController,
hintText: 'Enter your password',
leadingIcon: Image.asset(
'assets/images/png/lock.png',
width: 22.w,
height: 17.h,
),
),
// validatorText: "Email Id",
validator: (value) {
if (value!.isEmpty) {
return 'Enter your e-mail address';
}
if (!RegExp(
r'^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$')
.hasMatch(value)) {
return 'Enter a valid e-mail address';
}
return null;
},
inputFormatters: [
LengthLimitingTextInputFormatter(30),
RemoveEmojiInputFormatter()
],
),
sizedBoxHeight(10.h),
text16400white('Password'),
sizedBoxHeight(10.h),
CustomTextFormField(
isInputPassword: true,
textEditingController: _password,
hintText: 'Enter your password',
leadingIcon: Image.asset(
'assets/images/png/lock.png',
width: 22.w,
height: 17.h,
),
validator: (val) {
if (val == null || val.isEmpty) {
return 'Please enter your password';
}
return null;
},
inputFormatters: [
LengthLimitingTextInputFormatter(20),
RemoveEmojiInputFormatter()
],
),
sizedBoxHeight(10.h),
Align(
alignment: Alignment.centerRight,
child: Padding(
padding: EdgeInsets.only(right: 6.w),
child: text14400white('Forgot password ?'),
)),
sizedBoxHeight(40.h),
CustomButton(
text: "Login",
onPressed: () {
Get.toNamed(RouteName.mainscreen);
}),
sizedBoxHeight(20.h),
GestureDetector(
onTap: () {
Get.toNamed(RouteName.signupscreen);
},
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
text14400white('Dont have account ? '),
sizedBoxWidth(5.w),
text14700white('Sign up')
// validationMessage: errormsgpass.value,
validator: (value) {
if (value!.isEmpty) {
return 'Please enter your password';
}
if (!RegExp(
r'^(?=.*?[A-Z])(?=.*?[0-9])(?=.*?[!@#\$&*~]).{8,}$')
.hasMatch(value)) {
return 'Enter a valid password';
}
return null;
},
// onInput: (p0) {
// if (p0 == null || p0.isEmpty) {
// errormsgpass.value =
// 'Please enter your password';
// }
// return null;
// },
inputFormatters: [
LengthLimitingTextInputFormatter(20),
RemoveEmojiInputFormatter()
],
),
),
sizedBoxHeight(30.h),
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Container(
width: 160,
decoration: const ShapeDecoration(
shape: RoundedRectangleBorder(
side: BorderSide(
width: 0.50,
strokeAlign: BorderSide.strokeAlignCenter,
color: Color(0xFF434A53),
),
),
),
),
sizedBoxWidth(6.w),
text14400white('Or'),
sizedBoxWidth(6.w),
Container(
width: 160,
decoration: const ShapeDecoration(
shape: RoundedRectangleBorder(
side: BorderSide(
width: 0.50,
strokeAlign: BorderSide.strokeAlignCenter,
color: Color(0xFF434A53),
),
),
),
),
],
),
sizedBoxHeight(20.h),
Center(
child: SizedBox(
width: 220.w,
sizedBoxHeight(10.h),
Align(
alignment: Alignment.centerRight,
child: Padding(
padding: EdgeInsets.only(right: 6.w),
child: GestureDetector(
onTap: () {
Get.toNamed(RouteName.forgotpass);
},
child: text14400white('Forgot password ?')),
)),
sizedBoxHeight(40.h),
CustomButton(
text: "Login",
onPressed: () {
_logincheck();
}),
sizedBoxHeight(20.h),
GestureDetector(
onTap: () {
Get.toNamed(RouteName.signupscreen);
},
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Container(
width: 55,
height: 55,
decoration: ShapeDecoration(
gradient: LinearGradient(
begin: const Alignment(0.71, -0.70),
end: const Alignment(-0.71, 0.7),
colors: [
Colors.white
.withOpacity(0.07999999821186066),
Colors.white
.withOpacity(0.12999999523162842)
],
),
shape: const OvalBorder(
side: BorderSide(
width: 0.50,
color: Color(0xFF434A53)),
),
image: const DecorationImage(
image: AssetImage(
'assets/images/png/login2.png'))),
text14400white('Dont have account ? '),
sizedBoxWidth(5.w),
text14700white('Sign up')
],
),
),
sizedBoxHeight(30.h),
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Container(
width: 160,
decoration: const ShapeDecoration(
shape: RoundedRectangleBorder(
side: BorderSide(
width: 0.50,
strokeAlign: BorderSide.strokeAlignCenter,
color: Color(0xFF434A53),
),
),
),
const Spacer(),
Container(
width: 55,
height: 55,
decoration: ShapeDecoration(
gradient: LinearGradient(
begin: const Alignment(0.71, -0.70),
end: const Alignment(-0.71, 0.7),
colors: [
Colors.white
.withOpacity(0.07999999821186066),
Colors.white
.withOpacity(0.12999999523162842)
],
),
shape: const OvalBorder(
side: BorderSide(
width: 0.50,
color: Color(0xFF434A53)),
),
image: const DecorationImage(
image: AssetImage(
'assets/images/png/login3.png'))),
),
sizedBoxWidth(6.w),
text14400white('Or'),
sizedBoxWidth(6.w),
Container(
width: 160,
decoration: const ShapeDecoration(
shape: RoundedRectangleBorder(
side: BorderSide(
width: 0.50,
strokeAlign: BorderSide.strokeAlignCenter,
color: Color(0xFF434A53),
),
),
),
const Spacer(),
GestureDetector(
onTap: () async {
_checkIfisLoggedIn();
/* FacebookAuth.instance.login(
permissions: ['public_profile', 'email'],
).then((value) {
FacebookAuth.instance.getUserData().then((userData) {
setState(() {
/* _isLoggedIn = true;
_userObj = userData; */
});
});
}); */
},
child: Container(
),
],
),
sizedBoxHeight(20.h),
Center(
child: SizedBox(
width: 220.w,
child: Row(
children: [
Container(
width: 55,
height: 55,
decoration: ShapeDecoration(
@@ -336,18 +380,83 @@ class _LoginScreenState extends State<LoginScreen> {
),
image: const DecorationImage(
image: AssetImage(
'assets/images/png/login4.png'))),
'assets/images/png/login2.png'))),
),
),
],
const Spacer(),
Container(
width: 55,
height: 55,
decoration: ShapeDecoration(
gradient: LinearGradient(
begin: const Alignment(0.71, -0.70),
end: const Alignment(-0.71, 0.7),
colors: [
Colors.white
.withOpacity(0.07999999821186066),
Colors.white
.withOpacity(0.12999999523162842)
],
),
shape: const OvalBorder(
side: BorderSide(
width: 0.50,
color: Color(0xFF434A53)),
),
image: const DecorationImage(
image: AssetImage(
'assets/images/png/login3.png'))),
),
const Spacer(),
GestureDetector(
onTap: () async {
_checkIfisLoggedIn();
/* FacebookAuth.instance.login(
permissions: ['public_profile', 'email'],
).then((value) {
FacebookAuth.instance.getUserData().then((userData) {
setState(() {
/* _isLoggedIn = true;
_userObj = userData; */
});
});
}); */
},
child: Container(
width: 55,
height: 55,
decoration: ShapeDecoration(
gradient: LinearGradient(
begin: const Alignment(0.71, -0.70),
end: const Alignment(-0.71, 0.7),
colors: [
Colors.white.withOpacity(
0.07999999821186066),
Colors.white.withOpacity(
0.12999999523162842)
],
),
shape: const OvalBorder(
side: BorderSide(
width: 0.50,
color: Color(0xFF434A53)),
),
image: const DecorationImage(
image: AssetImage(
'assets/images/png/login4.png'))),
),
),
],
),
),
),
)
],
sizedBoxHeight(100)
],
),
),
)
],
),
),
),
],
),
],
),

View File

@@ -0,0 +1,33 @@
import 'package:regroup/Common/base_manager.dart';
import 'package:regroup/Common/controller/data/network/network_api.dart';
import 'package:regroup/Login/Model/LoginModel.dart';
import 'package:shared_preferences/shared_preferences.dart';
class LoginAPI {
LoginAPI();
Future<ResponseData> loginApi(var data) async {
SharedPreferences prefs = await SharedPreferences.getInstance();
final response = await NetworkApiServices().postApi(
data, 'https://regroup.betadelivery.com/api/v1/login',
optionalpar: true
// "auth/login/",
);
if (response.status == ResponseStatus.SUCCESS) {
//Map<String, dynamic> responseData = jsonDecode(response.data);
if (response.data['status'] == 'success') {
LoginModel loginObj = LoginModel.fromJson(response.data);
await prefs.setString('access-token', loginObj.data!.accessToken!);
// await prefs.setString('refreshToken', loginObj.data!.refresh!);
print("token is ${loginObj.data!.accessToken!}");
// print("refresh-token is ${loginObj.data!.refresh!}");
} else {
return ResponseData<dynamic>(
response.data['message'], ResponseStatus.FAILED);
}
}
return response;
}
}

View File

@@ -33,7 +33,7 @@ class CustomTextFormField extends StatefulWidget {
this.opacity2 = 0.05,
}) : super(key: key);
final String? Function(String?)? validator;
dynamic validator;
final TextEditingController? textEditingController;
final String? hintText;
final Widget? leadingIcon;
@@ -46,7 +46,7 @@ class CustomTextFormField extends StatefulWidget {
final TextInputType? texttype;
final List<TextInputFormatter>? inputFormatters;
final Color outlineColor;
final Function(String)? onInput;
final String? Function(String?)? onInput;
final VoidCallback? onTap;
final Widget? suffixIcon;
final double opacity1;
@@ -159,6 +159,7 @@ class _CustomTextFormFieldState extends State<CustomTextFormField> {
],
),
)
: widget.suffixIcon == null
? null
: widget.suffixIcon!,
@@ -168,6 +169,7 @@ class _CustomTextFormFieldState extends State<CustomTextFormField> {
),
keyboardType: widget.texttype,
inputFormatters: widget.inputFormatters,
// validator: widget.validator,
onChanged: (value) {
widget.onInput?.call(value);
validateField(value);

View File

@@ -1,6 +0,0 @@
class ApiUrls {
static const baseUrl = "";
static const getfaq = "${baseUrl}faq-tags";
}

View File

@@ -530,6 +530,16 @@ Widget text12w400_FCFCFC(String text) {
fontWeight: FontWeight.w400),
);
}
Widget text12w400_8E8E8E(String text) {
return Text(
text,
style: TextStyle(
fontSize: 12.sp,
color: Color(0xFF8E8E8E),
fontFamily: 'Helvetica',
fontWeight: FontWeight.w400),
);
}
Widget text12w700_FCFCFC(String text) {
return Text(

View File

@@ -16,19 +16,19 @@ import 'package:statsfl/statsfl.dart';
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
SystemChrome.setPreferredOrientations([
SystemChrome.setPreferredOrientations([
DeviceOrientation.portraitUp,
]).then(
(value) =>
// runApp(MyApp())
runApp(StatsFl(
align: Alignment.center,
width: 200,
height: 100,
child: const MyApp())),
);
}
]).then((value) =>
// runApp(MyApp())
runApp(const MyApp())
// StatsFl(
// align: Alignment.center,
// width: 200,
// height: 100,
// child: const MyApp())),
);
}
class MyApp extends StatefulWidget {
const MyApp({super.key});

View File

@@ -0,0 +1,61 @@
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:regroup/Common/CommonButton.dart';
import 'package:regroup/Utils/Common/CommonAppbar.dart';
import 'package:regroup/Utils/Common/CustomTextformfield.dart';
import 'package:regroup/Utils/Common/sized_box.dart';
import 'package:regroup/Utils/texts.dart';
class NewPassword extends StatefulWidget {
const NewPassword({super.key});
@override
State<NewPassword> createState() => _NewPasswordState();
}
class _NewPasswordState extends State<NewPassword> {
@override
Widget build(BuildContext context) {
return Scaffold(
// key: _scaffoldKey1,
backgroundColor: Color(0xFF222935),
extendBody: true,
resizeToAvoidBottomInset: false,
appBar: CommonAppbar(
titleTxt: "",
),
body: Stack(children: [
Container(
decoration: const BoxDecoration(
image: DecorationImage(
image: AssetImage("assets/images/png/Ellipse 1496.png"),
fit: BoxFit.fill)),
),
SingleChildScrollView(
child: Padding(
padding: const EdgeInsets.symmetric(horizontal: 16),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
sizedBoxHeight(30.h),
text22400white("Create password"),
sizedBoxHeight(15.h),
Container(
height: 1.h,
width: 250.w,
color: Color(0xFF858585),
),
sizedBoxHeight(35.h),
text16w400_FCFCFC("Create new password"),
sizedBoxHeight(15.h),
CustomTextFormField(),
sizedBoxHeight(20.h),
text16w400_FCFCFC("Confirm password"),
sizedBoxHeight(15.h),
CustomTextFormField(),
sizedBoxHeight(90.h),
CommonBtn(text: 'Continue'),
])))
]));
}
}

View File

@@ -20,7 +20,7 @@ class SignupScreen extends StatefulWidget {
class _SignupScreenState extends State<SignupScreen> {
TextEditingController emailidcontroller = TextEditingController();
TextEditingController _password = TextEditingController();
TextEditingController passwordController = TextEditingController();
TextEditingController confirmpasscontroller = TextEditingController();
List<String> _dropdownProductItems = [
@@ -36,6 +36,36 @@ class _SignupScreenState extends State<SignupScreen> {
});
}
void _Signincheck() async {
if (emailidcontroller.text.isBlank! ||
passwordController.text.isBlank! ||
confirmpasscontroller.text.isBlank!) {
Get.snackbar(
'Error',
'Enter your credentials',
snackPosition: SnackPosition.BOTTOM,
backgroundColor: Colors.red,
colorText: Colors.white,
);
} else if (!emailidcontroller.text.isEmail) {
Get.snackbar(
'Error',
'Enter a valid e-mail address',
snackPosition: SnackPosition.BOTTOM,
backgroundColor: Colors.red,
colorText: Colors.white,
);
} else if (_selectedAccountType == 'Individual') {
print('individual selected');
Get.toNamed(RouteName.verifyusercreen, arguments: _selectedAccountType);
} else if (_selectedAccountType == 'Business') {
print('business selected');
Get.toNamed(RouteName.verifyusercreen, arguments: _selectedAccountType);
} else {
utils.showToast('Please select an account type');
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
@@ -102,7 +132,7 @@ class _SignupScreenState extends State<SignupScreen> {
sizedBoxHeight(10.h),
CustomTextFormField(
isInputPassword: true,
textEditingController: _password,
textEditingController: passwordController,
hintText: 'Enter your password',
leadingIcon: Image.asset(
'assets/images/png/lock.png',
@@ -140,7 +170,7 @@ class _SignupScreenState extends State<SignupScreen> {
if (val == null || val.isEmpty) {
return 'Please enter your password';
}
if (val != _password.text) {
if (val != passwordController.text) {
return 'Password does not match';
}
return null;
@@ -167,7 +197,7 @@ class _SignupScreenState extends State<SignupScreen> {
'Individual',
'Business',
],
onItemSelected: (p0) {},
onItemSelected: _onItemSelected,
leadingImage: Image.asset(
'assets/images/png/user.png',
),
@@ -238,22 +268,7 @@ class _SignupScreenState extends State<SignupScreen> {
CustomButton(
text: "Continue",
onPressed: () {
if (_selectedAccountType == 'Individual') {
// Get.to(() => IndividualPage());
print('individual selected');
Get.toNamed(RouteName.verifyusercreen,
arguments: _selectedAccountType);
} else if (_selectedAccountType == 'Business') {
print('business selected');
Get.toNamed(RouteName.verifyusercreen,
arguments: _selectedAccountType);
// Get.to(() => BusinessPage());
} else {
// Handle case where no selection is made
utils.showToast(
'Please select an account type');
}
_Signincheck();
}),
sizedBoxHeight(20.h),
Row(

View File

@@ -4,13 +4,16 @@ import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
import 'package:glassmorphism/glassmorphism.dart';
import 'package:pin_code_fields/pin_code_fields.dart';
import 'package:regroup/Common/base_manager.dart';
import 'package:regroup/Utils/Common/CommonAppbar.dart';
import 'package:regroup/Utils/Common/CustomNextButton.dart';
import 'package:regroup/Utils/Common/blureffect.dart';
import 'package:regroup/Utils/Common/sized_box.dart';
import 'package:regroup/Utils/dialogs.dart';
import 'package:regroup/Utils/texts.dart';
import 'package:regroup/onboarding/forgotPass/ViewModel/ForgotPassAPI.dart';
import 'package:regroup/resources/routes/route_name.dart';
import 'package:shared_preferences/shared_preferences.dart';
class VerifyuserScreenState extends StatefulWidget {
const VerifyuserScreenState({super.key});
@@ -20,8 +23,64 @@ class VerifyuserScreenState extends StatefulWidget {
}
class _VerifyuserScreenStateState extends State<VerifyuserScreenState> {
String accounttype = Get.arguments;
// String accounttype = Get.arguments;
TextEditingController? pincode = TextEditingController();
final String emailAddress = Get.arguments;
String? principleId;
// principleId = prefs.getString('email').toString();
checkValidation() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
principleId = prefs.getString('principal_xid');
if (pincode!.text.isEmpty) {
utils.showToast('Pin field is empty');
} else {
Map<String, String> updata = {
"iam_principal_xid": principleId.toString(),
"otp": pincode!.text,
};
final data = await ForgotPassAPI().verifyotp(updata);
if (data.status == ResponseStatus.SUCCESS) {
// btnController.success();
// btnController.reset();
Get.snackbar(
"Success!",
'OTP verification successful!',
duration: Duration(seconds: 2),
colorText: Colors.white,
backgroundColor: Colors.green,
margin: EdgeInsets.all(8),
snackStyle: SnackStyle.FLOATING,
snackPosition: SnackPosition.BOTTOM,
);
Future.delayed(Duration(seconds: 1), () {
Get.toNamed(RouteName.newpassword, arguments: emailAddress);
});
// print('success');
} else {
// btnController.error();
// btnController.reset();
Get.snackbar(
"Error!",
data.data['message'],
duration: Duration(seconds: 2),
colorText: Colors.white,
backgroundColor: Colors.red,
margin: EdgeInsets.all(8),
snackStyle: SnackStyle.FLOATING,
snackPosition: SnackPosition.BOTTOM,
);
}
}
}
@override
void initState() {
print(emailAddress);
super.initState();
}
@override
Widget build(BuildContext context) {
@@ -80,7 +139,7 @@ class _VerifyuserScreenStateState extends State<VerifyuserScreenState> {
text22400white('Check your email'),
sizedBoxHeight(10.h),
text14400white(
'Enter the verification code that we sent to loremipsum@gmail.com'),
'Enter the verification code that we sent to $emailAddress'),
sizedBoxHeight(40.h),
text16400white('Enter code'),
sizedBoxHeight(20.h),
@@ -147,17 +206,18 @@ class _VerifyuserScreenStateState extends State<VerifyuserScreenState> {
CustomButton(
text: 'Continue',
onPressed: () {
if (pincode!.text.isEmpty) {
utils.showToast('Pin field is empty');
} else {
if (accounttype == 'Individual') {
print('individual selected');
Get.toNamed(RouteName.tellusindividualscreen);
} else if (accounttype == 'Business') {
print('business selected');
Get.toNamed(RouteName.tellusbusinessscreen);
}
}
// if (pincode!.text.isEmpty) {
// utils.showToast('Pin field is empty');
// } else {
// if (accounttype == 'Individual') {
// print('individual selected');
// Get.toNamed(RouteName.tellusindividualscreen);
// } else if (accounttype == 'Business') {
// print('business selected');
// Get.toNamed(RouteName.tellusbusinessscreen);
// }
// }
checkValidation();
}),
const Spacer(
// flex: 2,

View File

@@ -0,0 +1,161 @@
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
import 'package:regroup/Common/base_manager.dart';
import 'package:regroup/Utils/Common/CommonAppbar.dart';
import 'package:regroup/Utils/Common/CustomNextButton.dart';
import 'package:regroup/Utils/Common/CustomTextformfield.dart';
import 'package:regroup/Utils/Common/sized_box.dart';
import 'package:regroup/Utils/dialogs.dart';
import 'package:regroup/Utils/texts.dart';
import 'package:regroup/onboarding/forgotPass/ViewModel/ForgotPassAPI.dart';
import 'package:regroup/resources/routes/route_name.dart';
import 'package:shared_preferences/shared_preferences.dart';
class ForgotPass extends StatefulWidget {
const ForgotPass({super.key});
@override
State<ForgotPass> createState() => _ForgotPassState();
}
class _ForgotPassState extends State<ForgotPass> {
TextEditingController emailController = TextEditingController();
// final _formKey = GlobalKey<FormState>();
checkValidation() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
if (emailController.text.isEmpty) {
utils.showToast('Enter a email address');
} else if (!emailController.text.isEmail) {
utils.showToast('Enter a valid email address');
} else {
// Get.toNamed(RouteName.verifyusercreen,
// arguments: {
// "emailAddress": emailController.text
// });
Map<String, String> updata = {
"email_address": emailController.text,
};
final resp = await ForgotPassAPI().requestotp(updata);
if (resp.status == ResponseStatus.SUCCESS) {
Get.snackbar(
"Success!",
'OTP sent successfully!',
duration: Duration(seconds: 2),
colorText: Colors.white,
backgroundColor: Colors.green,
margin: EdgeInsets.all(8),
snackStyle: SnackStyle.FLOATING,
snackPosition: SnackPosition.BOTTOM,
);
prefs.setString('email', emailController.text);
prefs.setString('principal_xid', resp.data['data']['iam_principal_xid']);
Future.delayed(Duration(seconds: 1), () {
Get.toNamed(RouteName.verifyusercreen,
arguments: emailController.text);
});
// print('success');
} else if (resp.status == ResponseStatus.FAILED) {
Get.snackbar(
"Error!",
resp.message,
duration: Duration(seconds: 2),
colorText: Colors.white,
backgroundColor: Colors.red,
margin: EdgeInsets.all(8),
snackStyle: SnackStyle.FLOATING,
snackPosition: SnackPosition.BOTTOM,
);
} else {
// btnController.error();
// btnController.reset();
Get.snackbar(
"Error!",
resp.data['message'],
duration: Duration(seconds: 2),
colorText: Colors.white,
backgroundColor: Colors.red,
margin: EdgeInsets.all(8),
snackStyle: SnackStyle.FLOATING,
snackPosition: SnackPosition.BOTTOM,
);
}
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
// key: _scaffoldKey1,
backgroundColor: Color(0xFF222935),
extendBody: true,
resizeToAvoidBottomInset: false,
appBar: CommonAppbar(
titleTxt: "",
),
body: Stack(children: [
Container(
decoration: const BoxDecoration(
image: DecorationImage(
image: AssetImage("assets/images/png/Ellipse 1496.png"),
fit: BoxFit.fill)),
),
SingleChildScrollView(
child: Padding(
padding: const EdgeInsets.symmetric(horizontal: 16),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
sizedBoxHeight(30.h),
text22400white("Forgot password"),
sizedBoxHeight(15.h),
Container(
height: 1.h,
width: 250.w,
color: Color(0xFF858585),
),
sizedBoxHeight(35.h),
text16w400_FCFCFC("Email address"),
sizedBoxHeight(15.h),
CustomTextFormField(
textEditingController: emailController,
leadingIcon: Container(
height: 18.h,
width: 23.w,
child: Center(
child: Image.asset(
"assets/images/png/Frame 12 (1).png",
height: 18.h,
width: 23.w,
),
),
),
hintText: "loremipsum@gmail.comess",
validator: (value) {
if (value!.isEmpty) {
return 'Enter your e-mail address';
}
if (!RegExp(
r'^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$')
.hasMatch(value)) {
return 'Enter a valid e-mail address';
}
return null;
},
),
sizedBoxHeight(8.h),
text12w400_8E8E8E(
"Well send four digit code to the registered email"),
sizedBoxHeight(90.h),
CustomButton(
text: 'Continue',
onPressed: () {
checkValidation();
}),
])))
]));
}
}

View File

@@ -0,0 +1,50 @@
import 'package:regroup/Common/base_manager.dart';
import 'package:regroup/Common/controller/data/network/network_api.dart';
import 'package:shared_preferences/shared_preferences.dart';
class ForgotPassAPI {
ForgotPassAPI();
// class otpAPI {
// otpAPI(this.data);
// var data;
Future<ResponseData<dynamic>> requestotp(var data) async {
final response = await NetworkApiServices().postApi(
data,
"https://regroup.betadelivery.com/api/v1/forgot-password",
);
if (response.status == ResponseStatus.SUCCESS) {
//Map<String, dynamic> responseData = jsonDecode(response.data);
if (response.data['status'] == "success") {
return ResponseData<dynamic>(
response.data['message'], ResponseStatus.SUCCESS,data: response.data);
} else {
return ResponseData<dynamic>(
response.data['message'], ResponseStatus.FAILED);
}
}
return response;
}
Future<ResponseData<dynamic>> verifyotp(var data) async {
final response = await NetworkApiServices().postApi(
data,
"https://regroup.betadelivery.com/api/v1/forgot-password/verify-otp",
);
if (response.status == ResponseStatus.SUCCESS) {
//Map<String, dynamic> responseData = jsonDecode(response.data);
if (response.data['status'] == "success") {
return ResponseData<dynamic>(
response.data['message'], ResponseStatus.SUCCESS);
} else {
return ResponseData<dynamic>(
response.data['message'], ResponseStatus.FAILED);
}
}
return response;
}
}

View File

@@ -8,6 +8,7 @@ class RouteName {
static const String verifyusercreen = '/verifyuser';
static const String tellusindividualscreen = '/tellusindividualscreen';
static const String tellusbusinessscreen = '/tellusbusinessscreen';
static const String forgotpass = '/forgotpass';
static const String individualprofilestep1 = '/individualprofilestep1';
static const String individualactivitystep2 = '/individualactivitystep2';
@@ -79,8 +80,9 @@ class RouteName {
static const String changepassword = '/changepassword';
static const String addtimeline = '/addtimeline';
static const String verifycode = '/verifycode';
static const String availability = '/availability';
static const String newpassword = '/newpassword';
static const String availability = '/availability';
//Group Tab
@@ -96,8 +98,6 @@ class RouteName {
static const String certificate = '/certificate';
static const String sessions = '/sessions';
//subgroup
static const String subgroups = '/subgroups';
static const String subgroupinfo = '/subgroupinfo';
@@ -110,7 +110,5 @@ class RouteName {
static const String searchgroup = '/searchgroup';
static const String detailexplore = '/detailexplore';
static const String notificaationpage = '/notificationpage';
}

View File

@@ -83,6 +83,7 @@ import 'package:regroup/Feed%20Module/sidemenu/SavedPosts/SavedPosts.dart';
import 'package:regroup/Feed%20Module/sidemenu/sidemenu.dart';
import 'package:regroup/Utils/Common/NoInternet.dart';
import 'package:regroup/onboarding/NewPass/View/NewPass.dart';
import 'package:regroup/onboarding/Signup/View/Business/step1Letusunderstandbetter.dart';
import 'package:regroup/onboarding/Signup/View/Business/step2Selectgroup.dart';
import 'package:regroup/onboarding/Signup/View/Business/step3SelectCommunity.dart';
@@ -96,6 +97,7 @@ import 'package:regroup/onboarding/Signup/View/communitycommitment.dart';
import 'package:regroup/onboarding/Signup/View/signupendpage.dart';
import 'package:regroup/onboarding/Signup/View/signupscreen.dart';
import 'package:regroup/onboarding/Signup/View/verifyuser.dart';
import 'package:regroup/onboarding/forgotPass/View/ForgotPass.dart';
import 'package:regroup/onboarding/onboarding1.dart';
import 'package:regroup/onboarding/splashscreen.dart';
import 'package:regroup/resources/routes/route_name.dart';
@@ -476,5 +478,14 @@ class AppRoutes {
name: RouteName.sessions,
page: () => const Sessions(),
),
GetPage(
name: RouteName.forgotpass,
page: () => const ForgotPass(),
),
GetPage(
name: RouteName.newpassword,
page: () => const NewPassword(),
),
];
}