signup onboarding pages done including business and individual
This commit is contained in:
@@ -8,4 +8,28 @@ class ApiUrls {
|
||||
|
||||
static const getlogin = "${baseUrl}login";
|
||||
|
||||
static const registeration = "${baseUrl}send_otp";
|
||||
|
||||
static const verifyregisteration = "${baseUrl}verify_otp";
|
||||
|
||||
static const tellusIndividual = "${baseUrl}add_profile";
|
||||
|
||||
static const getIndividualactivity = "${baseUrl}fetch-interests";
|
||||
|
||||
static const postindividualactivity = "${baseUrl}select-interests";
|
||||
|
||||
static const getgroups = "${baseUrl}fetch-groups";
|
||||
|
||||
static const postgroups = "${baseUrl}select-groups";
|
||||
|
||||
static const getcommunities = "${baseUrl}fetch-communities";
|
||||
|
||||
static const postcommunities = "${baseUrl}select-communities";
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -13,34 +13,62 @@ import 'package:http/http.dart' as http;
|
||||
import '../../entry_point_controller.dart';
|
||||
|
||||
class NetworkApiServices {
|
||||
Dio dio = Dio();
|
||||
final controllerEntryPoint = Get.put(EntryPointController());
|
||||
|
||||
String basicAuth = 'Basic ' +
|
||||
base64.encode(
|
||||
utf8.encode('RegroupUserName:71%@L%es^bUX94`J9XT*@bh,._WWM{\$%^^&&'));
|
||||
|
||||
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 {
|
||||
Future<ResponseData> getApi(String url, {bool optionalpar = false}) async {
|
||||
if (kDebugMode) {
|
||||
print("api url is >>> $url");
|
||||
}
|
||||
Response response;
|
||||
SharedPreferences prefs = await SharedPreferences.getInstance();
|
||||
token = prefs.getString('token');
|
||||
print("url is $url");
|
||||
log(token.toString());
|
||||
|
||||
try {
|
||||
response = await dio.get(url,
|
||||
options: Options(headers: {
|
||||
"authorization": "Bearer $token",
|
||||
'content-Type': 'application/json',
|
||||
}));
|
||||
} on Exception catch (_) {
|
||||
response = await dio.get(
|
||||
url,
|
||||
options:
|
||||
// Options(headers: {
|
||||
// "authorization": "Bearer $token",
|
||||
// 'content-Type': 'application/json',
|
||||
// })
|
||||
optionalpar
|
||||
? Options(
|
||||
headers: {
|
||||
"authorization": basicAuth,
|
||||
},
|
||||
)
|
||||
: Options(
|
||||
headers: {
|
||||
'authorization': basicAuth,
|
||||
'access-token': token
|
||||
},
|
||||
),
|
||||
);
|
||||
} on Exception catch (e) {
|
||||
log(e.toString());
|
||||
return ResponseData<dynamic>(
|
||||
'Oops something Went Wrong', ResponseStatus.FAILED);
|
||||
}
|
||||
// on Exception catch (e) {
|
||||
// if (e is DioException) {
|
||||
// if (e.response!.statusCode == 403) {
|
||||
// return ResponseData<dynamic>(
|
||||
// e.response!.data['message'][0]!, ResponseStatus.FAILED,
|
||||
// data: e.response!.data);
|
||||
// }
|
||||
// }
|
||||
// return ResponseData<dynamic>(
|
||||
// 'Oops something Went Wrong',
|
||||
// ResponseStatus.FAILED,
|
||||
// );
|
||||
// }
|
||||
if (response.statusCode == 200) {
|
||||
return ResponseData<dynamic>("success", ResponseStatus.SUCCESS,
|
||||
data: response.data);
|
||||
@@ -76,7 +104,7 @@ class NetworkApiServices {
|
||||
// try {
|
||||
// response = await dio.post(url,
|
||||
// data: data,
|
||||
// options: optionalpar
|
||||
// options: optionalpar
|
||||
// ?
|
||||
// Options(
|
||||
// headers: {
|
||||
@@ -118,11 +146,10 @@ class NetworkApiServices {
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
|
||||
//New post api
|
||||
|
||||
@override
|
||||
@override
|
||||
Future<ResponseData> postApi(data, String url,
|
||||
{bool optionalpar = false}) async {
|
||||
if (kDebugMode) {
|
||||
@@ -132,7 +159,7 @@ class NetworkApiServices {
|
||||
Response response;
|
||||
|
||||
SharedPreferences prefs = await SharedPreferences.getInstance();
|
||||
String? token = prefs.getString('accessToken');
|
||||
String? token = prefs.getString('token');
|
||||
log(token.toString());
|
||||
try {
|
||||
response = await dio.post(
|
||||
@@ -152,9 +179,15 @@ class NetworkApiServices {
|
||||
} on Exception catch (e) {
|
||||
if (e is DioException) {
|
||||
if (e.response!.statusCode == 403) {
|
||||
return ResponseData<dynamic>(
|
||||
e.response!.statusMessage!, ResponseStatus.FAILED,
|
||||
data: e.response!.data);
|
||||
if (e.response!.data['message'] is List) {
|
||||
return ResponseData<dynamic>(
|
||||
e.response!.data['message'][0]!, ResponseStatus.FAILED,
|
||||
data: e.response!.data);
|
||||
} else {
|
||||
return ResponseData<dynamic>(
|
||||
e.response!.data['message'], ResponseStatus.FAILED,
|
||||
data: e.response!.data);
|
||||
}
|
||||
}
|
||||
}
|
||||
return ResponseData<dynamic>(
|
||||
|
||||
@@ -4,6 +4,8 @@ import 'package:get/get.dart';
|
||||
|
||||
String? myusername;
|
||||
String? token;
|
||||
String? emailid;
|
||||
int? isprofileupdated;
|
||||
String? phonenumber;
|
||||
bool pindialog = false;
|
||||
bool storagedialog = false;
|
||||
|
||||
@@ -0,0 +1,76 @@
|
||||
class GetcommunitiesModel {
|
||||
String? status;
|
||||
int? statusCode;
|
||||
String? message;
|
||||
List<Data>? data;
|
||||
|
||||
GetcommunitiesModel({this.status, this.statusCode, this.message, this.data});
|
||||
|
||||
GetcommunitiesModel.fromJson(Map<String, dynamic> json) {
|
||||
status = json['status'];
|
||||
statusCode = json['status_code'];
|
||||
message = json['message'];
|
||||
if (json['data'] != null) {
|
||||
data = <Data>[];
|
||||
json['data'].forEach((v) {
|
||||
data!.add(new Data.fromJson(v));
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
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!.map((v) => v.toJson()).toList();
|
||||
}
|
||||
return data;
|
||||
}
|
||||
}
|
||||
|
||||
class Data {
|
||||
int? id;
|
||||
String? communityProfilePhoto;
|
||||
String? communityBannerImage;
|
||||
String? communityName;
|
||||
String? communityLocation;
|
||||
String? communityDescription;
|
||||
int? communityTypeXid;
|
||||
int? activityXid;
|
||||
|
||||
Data(
|
||||
{this.id,
|
||||
this.communityProfilePhoto,
|
||||
this.communityBannerImage,
|
||||
this.communityName,
|
||||
this.communityLocation,
|
||||
this.communityDescription,
|
||||
this.communityTypeXid,
|
||||
this.activityXid});
|
||||
|
||||
Data.fromJson(Map<String, dynamic> json) {
|
||||
id = json['id'];
|
||||
communityProfilePhoto = json['community_profile_photo'];
|
||||
communityBannerImage = json['community_banner_image'];
|
||||
communityName = json['community_name'];
|
||||
communityLocation = json['community_location'];
|
||||
communityDescription = json['community_description'];
|
||||
communityTypeXid = json['community_type_xid'];
|
||||
activityXid = json['activity_xid'];
|
||||
}
|
||||
|
||||
Map<String, dynamic> toJson() {
|
||||
final Map<String, dynamic> data = new Map<String, dynamic>();
|
||||
data['id'] = this.id;
|
||||
data['community_profile_photo'] = this.communityProfilePhoto;
|
||||
data['community_banner_image'] = this.communityBannerImage;
|
||||
data['community_name'] = this.communityName;
|
||||
data['community_location'] = this.communityLocation;
|
||||
data['community_description'] = this.communityDescription;
|
||||
data['community_type_xid'] = this.communityTypeXid;
|
||||
data['activity_xid'] = this.activityXid;
|
||||
return data;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,72 @@
|
||||
class GrouplistModel {
|
||||
String? status;
|
||||
int? statusCode;
|
||||
String? message;
|
||||
List<Data>? data;
|
||||
|
||||
GrouplistModel({this.status, this.statusCode, this.message, this.data});
|
||||
|
||||
GrouplistModel.fromJson(Map<String, dynamic> json) {
|
||||
status = json['status'];
|
||||
statusCode = json['status_code'];
|
||||
message = json['message'];
|
||||
if (json['data'] != null) {
|
||||
data = <Data>[];
|
||||
json['data'].forEach((v) {
|
||||
data!.add(new Data.fromJson(v));
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
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!.map((v) => v.toJson()).toList();
|
||||
}
|
||||
return data;
|
||||
}
|
||||
}
|
||||
|
||||
class Data {
|
||||
int? id;
|
||||
String? title;
|
||||
String? backgroundImage;
|
||||
String? groupImage;
|
||||
String? location;
|
||||
String? link;
|
||||
String? description;
|
||||
|
||||
Data(
|
||||
{this.id,
|
||||
this.title,
|
||||
this.backgroundImage,
|
||||
this.groupImage,
|
||||
this.location,
|
||||
this.link,
|
||||
this.description});
|
||||
|
||||
Data.fromJson(Map<String, dynamic> json) {
|
||||
id = json['id'];
|
||||
title = json['title'];
|
||||
backgroundImage = json['background_image'];
|
||||
groupImage = json['group_image'];
|
||||
location = json['location'];
|
||||
link = json['link'];
|
||||
description = json['description'];
|
||||
}
|
||||
|
||||
Map<String, dynamic> toJson() {
|
||||
final Map<String, dynamic> data = new Map<String, dynamic>();
|
||||
data['id'] = this.id;
|
||||
data['title'] = this.title;
|
||||
data['background_image'] = this.backgroundImage;
|
||||
data['group_image'] = this.groupImage;
|
||||
data['location'] = this.location;
|
||||
data['link'] = this.link;
|
||||
data['description'] = this.description;
|
||||
return data;
|
||||
}
|
||||
}
|
||||
54
lib/onboarding/Signup/Model/Onboarding/IndividualModel.dart
Normal file
54
lib/onboarding/Signup/Model/Onboarding/IndividualModel.dart
Normal file
@@ -0,0 +1,54 @@
|
||||
class GetIndividualactivityModel {
|
||||
String? status;
|
||||
int? statusCode;
|
||||
String? message;
|
||||
List<Data>? data;
|
||||
|
||||
GetIndividualactivityModel(
|
||||
{this.status, this.statusCode, this.message, this.data});
|
||||
|
||||
GetIndividualactivityModel.fromJson(Map<String, dynamic> json) {
|
||||
status = json['status'];
|
||||
statusCode = json['status_code'];
|
||||
message = json['message'];
|
||||
if (json['data'] != null) {
|
||||
data = <Data>[];
|
||||
json['data'].forEach((v) {
|
||||
data!.add(new Data.fromJson(v));
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
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!.map((v) => v.toJson()).toList();
|
||||
}
|
||||
return data;
|
||||
}
|
||||
}
|
||||
|
||||
class Data {
|
||||
int? id;
|
||||
String? name;
|
||||
String? image;
|
||||
|
||||
Data({this.id, this.name, this.image});
|
||||
|
||||
Data.fromJson(Map<String, dynamic> json) {
|
||||
id = json['id'];
|
||||
name = json['name'];
|
||||
image = json['image'];
|
||||
}
|
||||
|
||||
Map<String, dynamic> toJson() {
|
||||
final Map<String, dynamic> data = new Map<String, dynamic>();
|
||||
data['id'] = this.id;
|
||||
data['name'] = this.name;
|
||||
data['image'] = this.image;
|
||||
return data;
|
||||
}
|
||||
}
|
||||
@@ -1,15 +1,22 @@
|
||||
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/CommonDropDown.dart';
|
||||
import 'package:regroup/Common/base_manager.dart';
|
||||
import 'package:regroup/Utils/Common/CommonDropdown.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/dialogs.dart';
|
||||
import 'package:regroup/Utils/texts.dart';
|
||||
import 'package:regroup/onboarding/Signup/view_model/getmethod.dart';
|
||||
import 'package:regroup/onboarding/Signup/view_model/postmethod.dart';
|
||||
import 'package:regroup/resources/routes/route_name.dart';
|
||||
import 'package:remove_emoji_input_formatter/remove_emoji_input_formatter.dart';
|
||||
|
||||
class SelectIndividualActivity extends StatefulWidget {
|
||||
const SelectIndividualActivity({super.key});
|
||||
@@ -21,351 +28,431 @@ class SelectIndividualActivity extends StatefulWidget {
|
||||
|
||||
class _SelectIndividualActivityState extends State<SelectIndividualActivity> {
|
||||
final List<int> _selectedIndices = [];
|
||||
TextEditingController otheractivitycontroller = TextEditingController();
|
||||
|
||||
void _onContainerTap(int index) {
|
||||
// to select only two containers
|
||||
// void _onContainerTap(int index) {
|
||||
// setState(() {
|
||||
// if (_selectedIndices.contains(index)) {
|
||||
// _selectedIndices.remove(index);
|
||||
// } else {
|
||||
// if (_selectedIndices.length < 2) {
|
||||
// _selectedIndices.add(index);
|
||||
// } else {
|
||||
// _selectedIndices[1] = index;
|
||||
// }
|
||||
// }
|
||||
// });
|
||||
// }
|
||||
|
||||
void _onContainerTap(int id) {
|
||||
setState(() {
|
||||
if (_selectedIndices.contains(index)) {
|
||||
_selectedIndices.remove(index);
|
||||
if (_selectedIndices.contains(id)) {
|
||||
_selectedIndices.remove(id);
|
||||
} else {
|
||||
if (_selectedIndices.length < 2) {
|
||||
_selectedIndices.add(index);
|
||||
} else {
|
||||
_selectedIndices[1] = index;
|
||||
}
|
||||
_selectedIndices.add(id);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
Color _getGradientColor(int index) {
|
||||
if (_selectedIndices.isEmpty) {
|
||||
return Colors.transparent;
|
||||
} else if (_selectedIndices.length == 1 &&
|
||||
_selectedIndices.contains(index)) {
|
||||
return Color(0XFFD90B2E);
|
||||
} else if (_selectedIndices.length == 2) {
|
||||
if (_selectedIndices[0] == index) {
|
||||
return Color(0XFFD90B2E);
|
||||
} else if (_selectedIndices[1] == index) {
|
||||
return Color(0xFF009DAB);
|
||||
}
|
||||
// to give two different colors for selectedd two containers
|
||||
// Color _getGradientColor(int index) {
|
||||
// if (_selectedIndices.isEmpty) {
|
||||
// return Colors.transparent;
|
||||
// } else if (_selectedIndices.length == 1 &&
|
||||
// _selectedIndices.contains(index)) {
|
||||
// return Color(0XFFD90B2E);
|
||||
// } else if (_selectedIndices.length == 2) {
|
||||
// if (_selectedIndices[0] == index) {
|
||||
// return Color(0XFFD90B2E);
|
||||
// } else if (_selectedIndices[1] == index) {
|
||||
// return Color(0xFF009DAB);
|
||||
// }
|
||||
// }
|
||||
// return Colors.transparent;
|
||||
// }
|
||||
|
||||
Color _getGradientColor(int id) {
|
||||
if (_selectedIndices.contains(id)) {
|
||||
return Color(0XFFD90B2E); // Selected color
|
||||
}
|
||||
return Colors.transparent; // Default color
|
||||
}
|
||||
|
||||
Uploadata() async {
|
||||
utils.loader();
|
||||
String selectedIndicesString = '[${_selectedIndices.join(',')}]';
|
||||
print('Selected Indices: $selectedIndicesString');
|
||||
Map<String, dynamic> updata = {
|
||||
"manage_interest_xid": selectedIndicesString,
|
||||
"other_interest": otheractivitycontroller.text,
|
||||
};
|
||||
print('Payload: $updata');
|
||||
|
||||
final data = await Onboard().PostIndividualActivity(updata);
|
||||
if (data.status == ResponseStatus.SUCCESS) {
|
||||
Get.back();
|
||||
print("Activities selected");
|
||||
Get.toNamed(RouteName.individualgroupstep3);
|
||||
|
||||
return utils.showToast(data.message);
|
||||
} else {
|
||||
Get.back();
|
||||
print("Not done");
|
||||
return utils.showToast(data.message);
|
||||
}
|
||||
return Colors.transparent;
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
return GestureDetector(
|
||||
onTap: () => FocusManager.instance.primaryFocus?.unfocus(),
|
||||
child: Scaffold(
|
||||
backgroundColor: Color.fromARGB(255, 18, 32, 47),
|
||||
body: Stack(
|
||||
children: [
|
||||
Positioned(top: 220, left: -30, child: CommonBlurLeftSecond()),
|
||||
Positioned(top: 450, right: -30, child: CommonBlurRightSecond()),
|
||||
Positioned(top: 530, left: -30, child: CommonBlurLeftBlue()),
|
||||
GlassmorphicContainer(
|
||||
width: MediaQuery.of(context).size.width,
|
||||
height: MediaQuery.of(context).size.height,
|
||||
borderRadius: 2,
|
||||
blur: 6,
|
||||
alignment: Alignment.bottomLeft,
|
||||
border: 2,
|
||||
linearGradient: LinearGradient(
|
||||
begin: Alignment.topCenter,
|
||||
end: Alignment.bottomCenter,
|
||||
colors: [
|
||||
Color(0XFF222935).withOpacity(0.60),
|
||||
Color(0XFF222935).withOpacity(0.60),
|
||||
Color(0XFF222935).withOpacity(0.60),
|
||||
Color(0XFF222935).withOpacity(0.60),
|
||||
bottomNavigationBar: Padding(
|
||||
padding: const EdgeInsets.only(bottom: 10, left: 16, right: 16),
|
||||
child: CustomButton(
|
||||
text: "Continue",
|
||||
onPressed: () {
|
||||
if (_selectedIndices.isEmpty &&
|
||||
otheractivitycontroller.text.isEmpty) {
|
||||
utils.showToast('Please select activity');
|
||||
} else {
|
||||
print(_selectedIndices.toString());
|
||||
// String selectedIndicesString =
|
||||
// _selectedIndices.join(',');
|
||||
// print(
|
||||
// 'Selected Indices: [$selectedIndicesString]');
|
||||
Uploadata();
|
||||
}
|
||||
// Get.toNamed(
|
||||
// RouteName.individualgroupstep3);
|
||||
}),
|
||||
),
|
||||
body: FutureBuilder(
|
||||
future: Getonboard().getIndividualactivity(),
|
||||
builder: (ctx, snapshot) {
|
||||
if (snapshot.data == null) {
|
||||
return const Column(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
children: [Center(child: CircularProgressIndicator())],
|
||||
);
|
||||
}
|
||||
if (snapshot.connectionState == ConnectionState.done) {
|
||||
if (snapshot.hasError) {
|
||||
return Center(
|
||||
child: Text(
|
||||
'${snapshot.error} occured',
|
||||
style: TextStyle(fontSize: 18.spMin),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
// Color.fromARGB(255, 18, 32, 47).withOpacity(0.50),
|
||||
// Color.fromARGB(255, 18, 32, 47).withOpacity(0.50),
|
||||
// Color.fromARGB(255, 18, 32, 47).withOpacity(0.50),
|
||||
// Color.fromARGB(255, 18, 32, 47).withOpacity(0.50),
|
||||
],
|
||||
),
|
||||
borderGradient: LinearGradient(
|
||||
begin: Alignment.topCenter,
|
||||
end: Alignment.bottomCenter,
|
||||
colors: [
|
||||
// Color.fromARGB(255, 18, 32, 47).withOpacity(0.50),
|
||||
// Color.fromARGB(255, 18, 32, 47).withOpacity(0.50),
|
||||
Color(0XFF222935).withOpacity(0.60),
|
||||
return Stack(
|
||||
children: [
|
||||
Positioned(top: 220, left: -30, child: CommonBlurLeftSecond()),
|
||||
Positioned(
|
||||
top: 450, right: -30, child: CommonBlurRightSecond()),
|
||||
Positioned(top: 530, left: -30, child: CommonBlurLeftBlue()),
|
||||
GlassmorphicContainer(
|
||||
width: MediaQuery.of(context).size.width,
|
||||
height: MediaQuery.of(context).size.height,
|
||||
borderRadius: 2,
|
||||
blur: 6,
|
||||
alignment: Alignment.bottomLeft,
|
||||
border: 2,
|
||||
linearGradient: LinearGradient(
|
||||
begin: Alignment.topCenter,
|
||||
end: Alignment.bottomCenter,
|
||||
colors: [
|
||||
Color(0XFF222935).withOpacity(0.60),
|
||||
Color(0XFF222935).withOpacity(0.60),
|
||||
Color(0XFF222935).withOpacity(0.60),
|
||||
Color(0XFF222935).withOpacity(0.60),
|
||||
|
||||
Color(0XFF222935).withOpacity(0.60),
|
||||
],
|
||||
),
|
||||
child: Padding(
|
||||
padding: EdgeInsets.symmetric(horizontal: 16.w, vertical: 50.h),
|
||||
child: Expanded(
|
||||
child: SingleChildScrollView(
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Align(
|
||||
alignment: Alignment.topRight,
|
||||
child: GestureDetector(
|
||||
onTap: () {
|
||||
Get.toNamed(RouteName.communitycommitscreen);
|
||||
},
|
||||
child: Text(
|
||||
'Skip',
|
||||
style: TextStyle(
|
||||
color: Colors.white,
|
||||
fontSize: 16.sp,
|
||||
fontFamily: 'Helvetica',
|
||||
fontWeight: FontWeight.w400,
|
||||
decoration: TextDecoration.underline,
|
||||
decorationColor: Colors.white),
|
||||
),
|
||||
),
|
||||
),
|
||||
sizedBoxHeight(30.h),
|
||||
Align(
|
||||
alignment: Alignment.center,
|
||||
child: text16400white('Step 2 of 4')),
|
||||
sizedBoxHeight(20.h),
|
||||
Container(
|
||||
width: double.infinity,
|
||||
height: 25.h,
|
||||
decoration: ShapeDecoration(
|
||||
shape: RoundedRectangleBorder(
|
||||
side: BorderSide(
|
||||
width: 1, color: Color(0xFF434A53)),
|
||||
borderRadius: BorderRadius.circular(30),
|
||||
),
|
||||
),
|
||||
child: Padding(
|
||||
padding: EdgeInsets.symmetric(
|
||||
horizontal: 8.w, vertical: 2.h),
|
||||
child: Row(
|
||||
children: [
|
||||
Container(
|
||||
width: 120.w,
|
||||
height: 15.h,
|
||||
decoration: ShapeDecoration(
|
||||
gradient: LinearGradient(
|
||||
begin: Alignment(0.98, -0.21),
|
||||
end: Alignment(-0.98, 0.21),
|
||||
colors: [
|
||||
Color(0xA5D90B2E),
|
||||
Color(0x42D90B2E)
|
||||
],
|
||||
),
|
||||
shape: RoundedRectangleBorder(
|
||||
borderRadius: BorderRadius.circular(30),
|
||||
),
|
||||
),
|
||||
child: Row(
|
||||
mainAxisAlignment: MainAxisAlignment.end,
|
||||
children: [
|
||||
Container(
|
||||
width: 15,
|
||||
height: 15,
|
||||
decoration: ShapeDecoration(
|
||||
gradient: LinearGradient(
|
||||
begin: Alignment(0.98, -0.21),
|
||||
end: Alignment(-0.98, 0.21),
|
||||
colors: [
|
||||
Color(0xFFD90B2E),
|
||||
Color(0x60D90B2E)
|
||||
],
|
||||
),
|
||||
shape: RoundedRectangleBorder(
|
||||
borderRadius:
|
||||
BorderRadius.circular(30),
|
||||
),
|
||||
),
|
||||
)
|
||||
],
|
||||
))
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
sizedBoxHeight(40.h),
|
||||
Center(
|
||||
child: _selectedIndices.isEmpty
|
||||
? text20400white('What is your main activity ?')
|
||||
: text20400white('What else do you do?')),
|
||||
sizedBoxHeight(10.w),
|
||||
Center(
|
||||
child: Container(
|
||||
width: 154.w,
|
||||
decoration: ShapeDecoration(
|
||||
shape: RoundedRectangleBorder(
|
||||
side: BorderSide(
|
||||
width: 1,
|
||||
strokeAlign: BorderSide.strokeAlignCenter,
|
||||
color: Color(0xFF858585),
|
||||
),
|
||||
// Color.fromARGB(255, 18, 32, 47).withOpacity(0.50),
|
||||
// Color.fromARGB(255, 18, 32, 47).withOpacity(0.50),
|
||||
// Color.fromARGB(255, 18, 32, 47).withOpacity(0.50),
|
||||
// Color.fromARGB(255, 18, 32, 47).withOpacity(0.50),
|
||||
],
|
||||
),
|
||||
borderGradient: LinearGradient(
|
||||
begin: Alignment.topCenter,
|
||||
end: Alignment.bottomCenter,
|
||||
colors: [
|
||||
// Color.fromARGB(255, 18, 32, 47).withOpacity(0.50),
|
||||
// Color.fromARGB(255, 18, 32, 47).withOpacity(0.50),
|
||||
Color(0XFF222935).withOpacity(0.60),
|
||||
|
||||
Color(0XFF222935).withOpacity(0.60),
|
||||
],
|
||||
),
|
||||
child: Padding(
|
||||
padding:
|
||||
EdgeInsets.symmetric(horizontal: 16.w, vertical: 0.h),
|
||||
child: SingleChildScrollView(
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Align(
|
||||
alignment: Alignment.topRight,
|
||||
child: GestureDetector(
|
||||
onTap: () {
|
||||
Get.toNamed(RouteName.communitycommitscreen);
|
||||
},
|
||||
child: Text(
|
||||
'Skip',
|
||||
style: TextStyle(
|
||||
color: Colors.white,
|
||||
fontSize: 16.sp,
|
||||
fontFamily: 'Helvetica',
|
||||
fontWeight: FontWeight.w400,
|
||||
decoration: TextDecoration.underline,
|
||||
decorationColor: Colors.white),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
sizedBoxHeight(30.h),
|
||||
Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
ActivityContainer(
|
||||
index: 0,
|
||||
titleString: 'Rowing',
|
||||
image: 'assets/images/svg/individualact1.svg',
|
||||
isSelected: _selectedIndices.contains(0),
|
||||
gradientColor: _getGradientColor(0),
|
||||
onTap: _onContainerTap,
|
||||
),
|
||||
ActivityContainer(
|
||||
index: 1,
|
||||
titleString: 'Badminton',
|
||||
image: 'assets/images/svg/badminton.svg',
|
||||
isSelected: _selectedIndices.contains(1),
|
||||
gradientColor: _getGradientColor(1),
|
||||
onTap: _onContainerTap,
|
||||
),
|
||||
ActivityContainer(
|
||||
index: 2,
|
||||
titleString: 'Cycling',
|
||||
image: 'assets/images/svg/individualact2.svg',
|
||||
isSelected: _selectedIndices.contains(2),
|
||||
gradientColor: _getGradientColor(2),
|
||||
onTap: _onContainerTap,
|
||||
),
|
||||
],
|
||||
sizedBoxHeight(30.h),
|
||||
Align(
|
||||
alignment: Alignment.center,
|
||||
child: text16400white('Step 1 of 3')),
|
||||
sizedBoxHeight(20.h),
|
||||
Container(
|
||||
width: double.infinity,
|
||||
height: 25.h,
|
||||
decoration: ShapeDecoration(
|
||||
shape: RoundedRectangleBorder(
|
||||
side: BorderSide(
|
||||
width: 1, color: Color(0xFF434A53)),
|
||||
borderRadius: BorderRadius.circular(30),
|
||||
),
|
||||
),
|
||||
SizedBox(height: 20.h),
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
ActivityContainer(
|
||||
index: 3,
|
||||
titleString: 'Football',
|
||||
image: 'assets/images/svg/individualact7.svg',
|
||||
isSelected: _selectedIndices.contains(3),
|
||||
gradientColor: _getGradientColor(3),
|
||||
onTap: _onContainerTap,
|
||||
),
|
||||
ActivityContainer(
|
||||
index: 4,
|
||||
titleString: 'Weightlifting',
|
||||
image: 'assets/images/svg/weightlifting.svg',
|
||||
isSelected: _selectedIndices.contains(4),
|
||||
gradientColor: _getGradientColor(4),
|
||||
onTap: _onContainerTap,
|
||||
),
|
||||
ActivityContainer(
|
||||
index: 5,
|
||||
titleString: 'Running',
|
||||
image: 'assets/images/svg/individualact3.svg',
|
||||
isSelected: _selectedIndices.contains(5),
|
||||
gradientColor: _getGradientColor(5),
|
||||
onTap: _onContainerTap,
|
||||
),
|
||||
],
|
||||
child: Padding(
|
||||
padding: EdgeInsets.symmetric(
|
||||
horizontal: 8.w, vertical: 2.h),
|
||||
child: Row(
|
||||
children: [
|
||||
Container(
|
||||
width: 120.w,
|
||||
height: 15.h,
|
||||
decoration: ShapeDecoration(
|
||||
gradient: LinearGradient(
|
||||
begin: Alignment(0.98, -0.21),
|
||||
end: Alignment(-0.98, 0.21),
|
||||
colors: [
|
||||
Color(0xA5D90B2E),
|
||||
Color(0x42D90B2E)
|
||||
],
|
||||
),
|
||||
shape: RoundedRectangleBorder(
|
||||
borderRadius:
|
||||
BorderRadius.circular(30),
|
||||
),
|
||||
),
|
||||
child: Row(
|
||||
mainAxisAlignment:
|
||||
MainAxisAlignment.end,
|
||||
children: [
|
||||
Container(
|
||||
width: 15,
|
||||
height: 15,
|
||||
decoration: ShapeDecoration(
|
||||
gradient: LinearGradient(
|
||||
begin: Alignment(0.98, -0.21),
|
||||
end: Alignment(-0.98, 0.21),
|
||||
colors: [
|
||||
Color(0xFFD90B2E),
|
||||
Color(0x60D90B2E)
|
||||
],
|
||||
),
|
||||
shape: RoundedRectangleBorder(
|
||||
borderRadius:
|
||||
BorderRadius.circular(30),
|
||||
),
|
||||
),
|
||||
)
|
||||
],
|
||||
))
|
||||
],
|
||||
),
|
||||
),
|
||||
SizedBox(height: 20.h),
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [
|
||||
ActivityContainer(
|
||||
index: 6,
|
||||
titleString: 'Social',
|
||||
image: 'assets/images/svg/individualact7.svg',
|
||||
isSelected: _selectedIndices.contains(6),
|
||||
gradientColor: _getGradientColor(6),
|
||||
onTap: _onContainerTap,
|
||||
),
|
||||
SizedBox(width: 20.w),
|
||||
ActivityContainer(
|
||||
index: 7,
|
||||
titleString: 'Special Interest (Societies)',
|
||||
image:
|
||||
'assets/images/svg/special interest.svg',
|
||||
isSelected: _selectedIndices.contains(7),
|
||||
gradientColor: _getGradientColor(7),
|
||||
onTap: _onContainerTap,
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
sizedBoxHeight(30.h),
|
||||
text20400FCFCFC("Select other activity"),
|
||||
sizedBoxHeight(25.h),
|
||||
CustomDropDownRadio(
|
||||
header: "",
|
||||
title: "",
|
||||
listData: [
|
||||
"American football",
|
||||
"Archery",
|
||||
"Athletics",
|
||||
"Baseball",
|
||||
"Basketball",
|
||||
"Boxing",
|
||||
"Canoeing",
|
||||
"Clay pigeon shooting",
|
||||
"Climbing",
|
||||
"Combat sports",
|
||||
"Cricket",
|
||||
"Dodgeball",
|
||||
"Equestrian",
|
||||
"Fencing",
|
||||
"Gaelic football",
|
||||
"Golf",
|
||||
"Gymnastics",
|
||||
"Handball",
|
||||
"Hockey",
|
||||
"Lacrosse",
|
||||
"Modern biathlon and pentathlon",
|
||||
"Netball",
|
||||
"Orienteering",
|
||||
"Pool and snooker",
|
||||
"Powerlifting",
|
||||
"Rifle",
|
||||
"Rugby league",
|
||||
"Rugby union",
|
||||
"Sailing",
|
||||
"Snowsports",
|
||||
"Squash",
|
||||
"Surfing",
|
||||
"Swimming",
|
||||
"Softball",
|
||||
"Table tennis",
|
||||
"Tennis",
|
||||
"Touch rugby",
|
||||
"Trampoline",
|
||||
"Triathlon",
|
||||
"Ultimate frisbee",
|
||||
"Volleyball",
|
||||
"Water polo",
|
||||
"Windsurfing"
|
||||
],
|
||||
onItemSelected: (p0) {},
|
||||
leadingImage: SizedBox()),
|
||||
// Spacer(flex: 1),
|
||||
sizedBoxHeight(35.h),
|
||||
CustomButton(
|
||||
text: "Continue",
|
||||
onPressed: () {
|
||||
Get.toNamed(RouteName.individualgroupstep3);
|
||||
})
|
||||
],
|
||||
),
|
||||
sizedBoxHeight(40.h),
|
||||
indiactivityobj!.data == null ||
|
||||
indiactivityobj!.data!.isEmpty
|
||||
? _buildNoDataBody(context)
|
||||
: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Center(
|
||||
child: _selectedIndices.isEmpty
|
||||
? text20400white(
|
||||
'What is your main activity ?')
|
||||
: text20400white(
|
||||
'What else do you do?')),
|
||||
sizedBoxHeight(10.w),
|
||||
Center(
|
||||
child: Container(
|
||||
width: 154.w,
|
||||
decoration: ShapeDecoration(
|
||||
shape: RoundedRectangleBorder(
|
||||
side: BorderSide(
|
||||
width: 1,
|
||||
strokeAlign:
|
||||
BorderSide.strokeAlignCenter,
|
||||
color: Color(0xFF858585),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
sizedBoxHeight(30.h),
|
||||
GridView.builder(
|
||||
physics: ScrollPhysics(),
|
||||
shrinkWrap: true,
|
||||
gridDelegate:
|
||||
SliverGridDelegateWithFixedCrossAxisCount(
|
||||
crossAxisCount:
|
||||
3, // Number of items in each row
|
||||
crossAxisSpacing: 12
|
||||
.w, // Horizontal spacing between items
|
||||
mainAxisSpacing: 12
|
||||
.h, // Vertical spacing between items
|
||||
),
|
||||
itemCount: indiactivityobj!.data!.length,
|
||||
itemBuilder: (context, index) {
|
||||
return ActivityContainer(
|
||||
index:
|
||||
indiactivityobj!.data![index].id!,
|
||||
titleString: indiactivityobj!
|
||||
.data![index].name!,
|
||||
image: indiactivityobj!
|
||||
.data![index].image,
|
||||
// 'assets/images/svg/individualact7.svg',
|
||||
isSelected: _selectedIndices.contains(
|
||||
indiactivityobj!
|
||||
.data![index].id!),
|
||||
gradientColor: _getGradientColor(
|
||||
indiactivityobj!
|
||||
.data![index].id!),
|
||||
onTap: _onContainerTap,
|
||||
);
|
||||
},
|
||||
),
|
||||
|
||||
sizedBoxHeight(30.h),
|
||||
text20400FCFCFC("Add other activity"),
|
||||
sizedBoxHeight(25.h),
|
||||
CustomTextFormField(
|
||||
textEditingController:
|
||||
otheractivitycontroller,
|
||||
texttype: TextInputType.text,
|
||||
hintText: "Enter other activity",
|
||||
// leadingIcon:
|
||||
// // const Icon(Icons.mail_outline),
|
||||
// Image.asset(
|
||||
// width: 22.w,
|
||||
// height: 17.h,
|
||||
// 'assets/images/png/user.png',
|
||||
// ),
|
||||
// validatorText: "Enter your full name",
|
||||
validator: (value) {
|
||||
if (value!.isEmpty) {
|
||||
return 'Enter your full name ';
|
||||
}
|
||||
return null;
|
||||
},
|
||||
inputFormatters: [
|
||||
// LengthLimitingTextInputFormatter(20),
|
||||
RemoveEmojiInputFormatter(),
|
||||
FilteringTextInputFormatter.allow(
|
||||
RegExp('[a-zA-Z ]'))
|
||||
],
|
||||
),
|
||||
// CustomDropDownRadio(
|
||||
// header: "",
|
||||
// title: "",
|
||||
// listData: [
|
||||
// "American football",
|
||||
// "Archery",
|
||||
// "Athletics",
|
||||
// "Baseball",
|
||||
// "Basketball",
|
||||
// "Boxing",
|
||||
// "Canoeing",
|
||||
// "Clay pigeon shooting",
|
||||
// "Climbing",
|
||||
// "Combat sports",
|
||||
// "Cricket",
|
||||
// "Dodgeball",
|
||||
// "Equestrian",
|
||||
// "Fencing",
|
||||
// "Gaelic football",
|
||||
// "Golf",
|
||||
// "Gymnastics",
|
||||
// "Handball",
|
||||
// "Hockey",
|
||||
// "Lacrosse",
|
||||
// "Modern biathlon and pentathlon",
|
||||
// "Netball",
|
||||
// "Orienteering",
|
||||
// "Pool and snooker",
|
||||
// "Powerlifting",
|
||||
// "Rifle",
|
||||
// "Rugby league",
|
||||
// "Rugby union",
|
||||
// "Sailing",
|
||||
// "Snowsports",
|
||||
// "Squash",
|
||||
// "Surfing",
|
||||
// "Swimming",
|
||||
// "Softball",
|
||||
// "Table tennis",
|
||||
// "Tennis",
|
||||
// "Touch rugby",
|
||||
// "Trampoline",
|
||||
// "Triathlon",
|
||||
// "Ultimate frisbee",
|
||||
// "Volleyball",
|
||||
// "Water polo",
|
||||
// "Windsurfing"
|
||||
// ],
|
||||
// onItemSelected: (p0) {},
|
||||
// leadingImage: SizedBox()),
|
||||
// // Spacer(flex: 1),
|
||||
|
||||
sizedBoxHeight(35.h),
|
||||
],
|
||||
)
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
)
|
||||
],
|
||||
));
|
||||
)
|
||||
],
|
||||
);
|
||||
},
|
||||
),
|
||||
|
||||
//
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
Widget _buildNoDataBody(context) {
|
||||
return const Column(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [Text("No Data Found")],
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
class ActivityContainer extends StatelessWidget {
|
||||
final int index;
|
||||
final String titleString;
|
||||
final String image;
|
||||
final String? image;
|
||||
final bool isSelected;
|
||||
final Color gradientColor;
|
||||
final Function(int) onTap;
|
||||
@@ -412,12 +499,31 @@ class ActivityContainer extends StatelessWidget {
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
children: [
|
||||
SvgPicture.asset(
|
||||
image,
|
||||
width: 50.w,
|
||||
height: 50.h,
|
||||
),
|
||||
SizedBox(height: 10.h),
|
||||
// image.isEmpty
|
||||
// ? SvgPicture.asset(
|
||||
// "assets/images/svg/individualact7.svg",
|
||||
// width: 50.w,
|
||||
// height: 50.h,
|
||||
// )
|
||||
// : Image.network(image),
|
||||
image == null || image!.isEmpty
|
||||
? Image.asset(
|
||||
'assets/images/png/redregroup.png',
|
||||
color: Colors.white,
|
||||
width: 50.w,
|
||||
height: 50.h,
|
||||
)
|
||||
// SvgPicture.asset(
|
||||
// "assets/images/svg/individualact7.svg",
|
||||
// width: 50.w,
|
||||
// height: 50.h,
|
||||
// )
|
||||
: Image.network(
|
||||
image!,
|
||||
width: 50.w,
|
||||
height: 50.h,
|
||||
),
|
||||
Spacer(flex: 3),
|
||||
SizedBox(
|
||||
child: Text(
|
||||
titleString,
|
||||
|
||||
@@ -1,14 +1,20 @@
|
||||
import 'dart:async';
|
||||
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/material.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/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/dialogs.dart';
|
||||
import 'package:regroup/Utils/texts.dart';
|
||||
import 'package:regroup/onboarding/Signup/Model/Onboarding/Individual/GroupModel.dart';
|
||||
import 'package:regroup/onboarding/Signup/view_model/getmethod.dart';
|
||||
import 'package:regroup/onboarding/Signup/view_model/postmethod.dart';
|
||||
import 'package:regroup/resources/routes/route_name.dart';
|
||||
import 'package:remove_emoji_input_formatter/remove_emoji_input_formatter.dart';
|
||||
|
||||
@@ -20,250 +26,371 @@ class SelectIndividualGroup extends StatefulWidget {
|
||||
}
|
||||
|
||||
class _SelectIndividualGroupState extends State<SelectIndividualGroup> {
|
||||
TextEditingController searchcontroller = TextEditingController();
|
||||
// StreamController<BlogsModel> blogsController = StreamController();
|
||||
StreamController<GrouplistModel> searchcontroller = StreamController();
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
var updata = "";
|
||||
Getonboard().getGroupsearch(updata, streamController: searchcontroller);
|
||||
|
||||
super.initState();
|
||||
}
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
searchcontroller.close();
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
final List<int> _selectedIndices = [];
|
||||
|
||||
void _onContainerTap(int id) {
|
||||
setState(() {
|
||||
if (_selectedIndices.contains(id)) {
|
||||
_selectedIndices.remove(id);
|
||||
} else {
|
||||
_selectedIndices.add(id);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
Uploadata() async {
|
||||
utils.loader();
|
||||
String selectedIndicesString = '[${_selectedIndices.join(',')}]';
|
||||
print('Selected Indices: $selectedIndicesString');
|
||||
Map<String, dynamic> updata = {
|
||||
"manage_group_xid": selectedIndicesString,
|
||||
};
|
||||
print('Payload: $updata');
|
||||
|
||||
final data = await Onboard().postGroups(updata);
|
||||
if (data.status == ResponseStatus.SUCCESS) {
|
||||
Get.back();
|
||||
print("groups selected");
|
||||
Get.toNamed(RouteName.individualcommunitystep4);
|
||||
|
||||
return utils.showToast(data.message);
|
||||
} else {
|
||||
Get.back();
|
||||
print("Not done");
|
||||
return utils.showToast(data.message);
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
backgroundColor: Color.fromARGB(255, 18, 32, 47),
|
||||
body: Stack(
|
||||
children: [
|
||||
Positioned(top: 70, left: -30, child: CommonBlurLeftSecond()),
|
||||
Positioned(top: 400, right: -30, child: CommonBlurRightSecond()),
|
||||
Positioned(top: 630, left: -30, child: CommonBlurLeftBlue()),
|
||||
SingleChildScrollView(
|
||||
child: GlassmorphicContainer(
|
||||
width: MediaQuery.of(context).size.width,
|
||||
height:
|
||||
// 500.h,
|
||||
MediaQuery.of(context).size.height,
|
||||
borderRadius: 2,
|
||||
blur: 6,
|
||||
alignment: Alignment.bottomLeft,
|
||||
border: 2,
|
||||
linearGradient: LinearGradient(
|
||||
begin: Alignment.topCenter,
|
||||
end: Alignment.bottomCenter,
|
||||
colors: [
|
||||
Color(0XFF222935).withOpacity(0.60),
|
||||
Color(0XFF222935).withOpacity(0.60),
|
||||
Color(0XFF222935).withOpacity(0.60),
|
||||
Color(0XFF222935).withOpacity(0.60),
|
||||
return GestureDetector(
|
||||
onTap: () => FocusManager.instance.primaryFocus?.unfocus(),
|
||||
child: Scaffold(
|
||||
backgroundColor: Color.fromARGB(255, 18, 32, 47),
|
||||
bottomNavigationBar: Padding(
|
||||
padding: const EdgeInsets.only(bottom: 10, left: 16, right: 16),
|
||||
child: CustomButton(
|
||||
text: "Continue",
|
||||
onPressed: () {
|
||||
// Get.toNamed(RouteName.individualcommunitystep4);
|
||||
if (_selectedIndices.isEmpty) {
|
||||
utils.showToast('Please select activity');
|
||||
} else {
|
||||
print(_selectedIndices.toString());
|
||||
// String selectedIndicesString =
|
||||
// _selectedIndices.join(',');
|
||||
// print(
|
||||
// 'Selected Indices: [$selectedIndicesString]');
|
||||
Uploadata();
|
||||
}
|
||||
},
|
||||
),
|
||||
),
|
||||
body: Stack(
|
||||
children: [
|
||||
Positioned(top: 70, left: -30, child: CommonBlurLeftSecond()),
|
||||
Positioned(top: 400, right: -30, child: CommonBlurRightSecond()),
|
||||
Positioned(top: 630, left: -30, child: CommonBlurLeftBlue()),
|
||||
SingleChildScrollView(
|
||||
child: GlassmorphicContainer(
|
||||
width: MediaQuery.of(context).size.width,
|
||||
height:
|
||||
// 500.h,
|
||||
MediaQuery.of(context).size.height,
|
||||
borderRadius: 2,
|
||||
blur: 6,
|
||||
alignment: Alignment.bottomLeft,
|
||||
border: 2,
|
||||
linearGradient: LinearGradient(
|
||||
begin: Alignment.topCenter,
|
||||
end: Alignment.bottomCenter,
|
||||
colors: [
|
||||
Color(0XFF222935).withOpacity(0.60),
|
||||
Color(0XFF222935).withOpacity(0.60),
|
||||
Color(0XFF222935).withOpacity(0.60),
|
||||
Color(0XFF222935).withOpacity(0.60),
|
||||
|
||||
// Color.fromARGB(255, 18, 32, 47).withOpacity(0.50),
|
||||
// Color.fromARGB(255, 18, 32, 47).withOpacity(0.50),
|
||||
// Color.fromARGB(255, 18, 32, 47).withOpacity(0.50),
|
||||
// Color.fromARGB(255, 18, 32, 47).withOpacity(0.50),
|
||||
],
|
||||
),
|
||||
borderGradient: LinearGradient(
|
||||
begin: Alignment.topCenter,
|
||||
end: Alignment.bottomCenter,
|
||||
colors: [
|
||||
// Color.fromARGB(255, 18, 32, 47).withOpacity(0.50),
|
||||
// Color.fromARGB(255, 18, 32, 47).withOpacity(0.50),
|
||||
Color(0XFF222935).withOpacity(0.60),
|
||||
// Color.fromARGB(255, 18, 32, 47).withOpacity(0.50),
|
||||
// Color.fromARGB(255, 18, 32, 47).withOpacity(0.50),
|
||||
// Color.fromARGB(255, 18, 32, 47).withOpacity(0.50),
|
||||
// Color.fromARGB(255, 18, 32, 47).withOpacity(0.50),
|
||||
],
|
||||
),
|
||||
borderGradient: LinearGradient(
|
||||
begin: Alignment.topCenter,
|
||||
end: Alignment.bottomCenter,
|
||||
colors: [
|
||||
// Color.fromARGB(255, 18, 32, 47).withOpacity(0.50),
|
||||
// Color.fromARGB(255, 18, 32, 47).withOpacity(0.50),
|
||||
Color(0XFF222935).withOpacity(0.60),
|
||||
|
||||
Color(0XFF222935).withOpacity(0.60),
|
||||
],
|
||||
),
|
||||
child: Padding(
|
||||
padding:
|
||||
EdgeInsets.symmetric(horizontal: 16.w, vertical: 50.h),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Align(
|
||||
alignment: Alignment.topRight,
|
||||
child: GestureDetector(
|
||||
onTap: () {
|
||||
Get.toNamed(RouteName.communitycommitscreen);
|
||||
},
|
||||
child: Text(
|
||||
'Skip',
|
||||
style: TextStyle(
|
||||
color: Colors.white,
|
||||
fontSize: 16.sp,
|
||||
fontFamily: 'Helvetica',
|
||||
fontWeight: FontWeight.w400,
|
||||
decoration: TextDecoration.underline,
|
||||
decorationColor: Colors.white),
|
||||
Color(0XFF222935).withOpacity(0.60),
|
||||
],
|
||||
),
|
||||
child: Padding(
|
||||
padding: EdgeInsets.symmetric(
|
||||
horizontal: 16.w, vertical: 50.h),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Align(
|
||||
alignment: Alignment.topRight,
|
||||
child: GestureDetector(
|
||||
onTap: () {
|
||||
Get.toNamed(RouteName.communitycommitscreen);
|
||||
},
|
||||
child: Text(
|
||||
'Skip',
|
||||
style: TextStyle(
|
||||
color: Colors.white,
|
||||
fontSize: 16.sp,
|
||||
fontFamily: 'Helvetica',
|
||||
fontWeight: FontWeight.w400,
|
||||
decoration: TextDecoration.underline,
|
||||
decorationColor: Colors.white),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
sizedBoxHeight(30.h),
|
||||
Align(
|
||||
alignment: Alignment.center,
|
||||
child: text16400white('Step 3 of 4')),
|
||||
sizedBoxHeight(20.h),
|
||||
Container(
|
||||
width: double.infinity,
|
||||
height: 25.h,
|
||||
decoration: ShapeDecoration(
|
||||
shape: RoundedRectangleBorder(
|
||||
side: BorderSide(
|
||||
width: 1, color: Color(0xFF434A53)),
|
||||
borderRadius: BorderRadius.circular(30),
|
||||
),
|
||||
),
|
||||
child: Padding(
|
||||
padding: EdgeInsets.symmetric(
|
||||
horizontal: 8.w, vertical: 2.h),
|
||||
child: Row(
|
||||
children: [
|
||||
Container(
|
||||
width: 240.w,
|
||||
height: 15.h,
|
||||
decoration: ShapeDecoration(
|
||||
gradient: LinearGradient(
|
||||
begin: Alignment(0.98, -0.21),
|
||||
end: Alignment(-0.98, 0.21),
|
||||
colors: [
|
||||
Color(0xA5D90B2E),
|
||||
Color(0x42D90B2E)
|
||||
],
|
||||
),
|
||||
shape: RoundedRectangleBorder(
|
||||
borderRadius: BorderRadius.circular(30),
|
||||
),
|
||||
),
|
||||
child: Row(
|
||||
mainAxisAlignment: MainAxisAlignment.end,
|
||||
children: [
|
||||
Container(
|
||||
width: 15,
|
||||
height: 15,
|
||||
decoration: ShapeDecoration(
|
||||
gradient: LinearGradient(
|
||||
begin: Alignment(0.98, -0.21),
|
||||
end: Alignment(-0.98, 0.21),
|
||||
colors: [
|
||||
Color(0xFFD90B2E),
|
||||
Color(0x60D90B2E)
|
||||
],
|
||||
),
|
||||
shape: RoundedRectangleBorder(
|
||||
borderRadius:
|
||||
BorderRadius.circular(30),
|
||||
),
|
||||
),
|
||||
)
|
||||
],
|
||||
))
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
sizedBoxHeight(40.h),
|
||||
Center(
|
||||
child: Row(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [
|
||||
text20400white('Find your group'),
|
||||
sizedBoxWidth(5.w),
|
||||
Image.asset('assets/images/png/informationicon.png')
|
||||
],
|
||||
)),
|
||||
sizedBoxHeight(10.w),
|
||||
Center(
|
||||
child: Container(
|
||||
width: 108.w,
|
||||
sizedBoxHeight(30.h),
|
||||
Align(
|
||||
alignment: Alignment.center,
|
||||
child: text16400white('Step 2 of 3')),
|
||||
sizedBoxHeight(20.h),
|
||||
Container(
|
||||
width: double.infinity,
|
||||
height: 25.h,
|
||||
decoration: ShapeDecoration(
|
||||
shape: RoundedRectangleBorder(
|
||||
side: BorderSide(
|
||||
width: 1,
|
||||
strokeAlign: BorderSide.strokeAlignCenter,
|
||||
color: Color(0xFF858585),
|
||||
width: 1, color: Color(0xFF434A53)),
|
||||
borderRadius: BorderRadius.circular(30),
|
||||
),
|
||||
),
|
||||
child: Padding(
|
||||
padding: EdgeInsets.symmetric(
|
||||
horizontal: 8.w, vertical: 2.h),
|
||||
child: Row(
|
||||
children: [
|
||||
Container(
|
||||
width: 216.w,
|
||||
height: 15.h,
|
||||
decoration: ShapeDecoration(
|
||||
gradient: LinearGradient(
|
||||
begin: Alignment(0.98, -0.21),
|
||||
end: Alignment(-0.98, 0.21),
|
||||
colors: [
|
||||
Color(0xA5D90B2E),
|
||||
Color(0x42D90B2E)
|
||||
],
|
||||
),
|
||||
shape: RoundedRectangleBorder(
|
||||
borderRadius:
|
||||
BorderRadius.circular(30),
|
||||
),
|
||||
),
|
||||
child: Row(
|
||||
mainAxisAlignment:
|
||||
MainAxisAlignment.end,
|
||||
children: [
|
||||
Container(
|
||||
width: 15,
|
||||
height: 15,
|
||||
decoration: ShapeDecoration(
|
||||
gradient: LinearGradient(
|
||||
begin: Alignment(0.98, -0.21),
|
||||
end: Alignment(-0.98, 0.21),
|
||||
colors: [
|
||||
Color(0xFFD90B2E),
|
||||
Color(0x60D90B2E)
|
||||
],
|
||||
),
|
||||
shape: RoundedRectangleBorder(
|
||||
borderRadius:
|
||||
BorderRadius.circular(30),
|
||||
),
|
||||
),
|
||||
)
|
||||
],
|
||||
))
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
sizedBoxHeight(40.h),
|
||||
Center(
|
||||
child: Row(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [
|
||||
text20400white('Find your group'),
|
||||
sizedBoxWidth(5.w),
|
||||
Image.asset(
|
||||
'assets/images/png/informationicon.png')
|
||||
],
|
||||
)),
|
||||
sizedBoxHeight(10.w),
|
||||
Center(
|
||||
child: Container(
|
||||
width: 108.w,
|
||||
decoration: ShapeDecoration(
|
||||
shape: RoundedRectangleBorder(
|
||||
side: BorderSide(
|
||||
width: 1,
|
||||
strokeAlign: BorderSide.strokeAlignCenter,
|
||||
color: Color(0xFF858585),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
sizedBoxHeight(30.h),
|
||||
CustomTextFormField(
|
||||
textEditingController: searchcontroller,
|
||||
texttype: TextInputType.text,
|
||||
hintText: "Search groups",
|
||||
leadingIcon:
|
||||
// const Icon(Icons.mail_outline),
|
||||
// SvgPicture.asset(
|
||||
// // width: 23.w,
|
||||
// // height: 23.h,
|
||||
// 'assets/images/svg/search.svg',
|
||||
// ),
|
||||
Padding(
|
||||
padding: EdgeInsets.symmetric(horizontal: 16.w),
|
||||
child: Icon(
|
||||
Icons.search,
|
||||
size: 35,
|
||||
color: Colors.white,
|
||||
sizedBoxHeight(30.h),
|
||||
CustomTextFormField(
|
||||
// textEditingController: searchcontroller,
|
||||
texttype: TextInputType.text,
|
||||
hintText: "Search groups",
|
||||
leadingIcon:
|
||||
// const Icon(Icons.mail_outline),
|
||||
// SvgPicture.asset(
|
||||
// // width: 23.w,
|
||||
// // height: 23.h,
|
||||
// 'assets/images/svg/search.svg',
|
||||
// ),
|
||||
Padding(
|
||||
padding: EdgeInsets.symmetric(horizontal: 16.w),
|
||||
child: Icon(
|
||||
Icons.search,
|
||||
size: 35,
|
||||
color: Colors.white,
|
||||
),
|
||||
),
|
||||
// validatorText: "Enter your full name",
|
||||
inputFormatters: [
|
||||
// LengthLimitingTextInputFormatter(20),
|
||||
RemoveEmojiInputFormatter(),
|
||||
],
|
||||
onInput: (value) {
|
||||
// Onboard().postGroupsearch({"search": value},
|
||||
// streamController: searchcontroller);
|
||||
// searchGroups(value!);
|
||||
Getonboard().getGroupsearch(value,
|
||||
streamController: searchcontroller);
|
||||
},
|
||||
),
|
||||
// validatorText: "Enter your full name",
|
||||
inputFormatters: [
|
||||
// LengthLimitingTextInputFormatter(20),
|
||||
RemoveEmojiInputFormatter(),
|
||||
],
|
||||
),
|
||||
sizedBoxHeight(30.h),
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
GroupSelect(
|
||||
titleString: 'Cambridge university Boat ..',
|
||||
image: 'assets/images/png/groupindividual.png'),
|
||||
GroupSelect(
|
||||
titleString: 'Liverpool FC',
|
||||
image:
|
||||
'assets/images/png/groupindividual2.png'),
|
||||
],
|
||||
),
|
||||
sizedBoxHeight(30.h),
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
GroupSelect(
|
||||
titleString: 'Cambridge rugby Club',
|
||||
image:
|
||||
'assets/images/png/groupindividual3.png'),
|
||||
GroupSelect(
|
||||
titleString: 'Cambridge university Boat ..',
|
||||
image: 'assets/images/png/groupindividual.png'),
|
||||
],
|
||||
),
|
||||
Spacer(flex: 1),
|
||||
CustomButton(
|
||||
text: "Continue",
|
||||
onPressed: () {
|
||||
Get.toNamed(RouteName.individualcommunitystep4);
|
||||
})
|
||||
],
|
||||
),
|
||||
)),
|
||||
),
|
||||
],
|
||||
));
|
||||
sizedBoxHeight(30.h),
|
||||
StreamBuilder<GrouplistModel>(
|
||||
stream: searchcontroller.stream,
|
||||
builder: (ctx, snapshot) {
|
||||
if (snapshot.connectionState ==
|
||||
ConnectionState.waiting) {
|
||||
// Display shimmer effect while waiting for data
|
||||
return Center(
|
||||
child: CircularProgressIndicator());
|
||||
} else if (snapshot.hasError) {
|
||||
// Handle error state
|
||||
return Center(
|
||||
child: Text(
|
||||
'${snapshot.error} occurred',
|
||||
style: TextStyle(fontSize: 18),
|
||||
),
|
||||
);
|
||||
} else {
|
||||
// Data has been loaded, show actual UI
|
||||
return grouplistobj!.data!.isEmpty
|
||||
? _buildNoDataBody(context)
|
||||
: Expanded(
|
||||
child: GridView.builder(
|
||||
physics: ScrollPhysics(),
|
||||
gridDelegate:
|
||||
SliverGridDelegateWithFixedCrossAxisCount(
|
||||
crossAxisCount: 2,
|
||||
crossAxisSpacing: 12.0,
|
||||
mainAxisSpacing: 12.0,
|
||||
),
|
||||
itemCount: grouplistobj!.data!.length,
|
||||
itemBuilder: (context, index) {
|
||||
return SizedBox(
|
||||
height:
|
||||
150.0, // Adjust this height according to your design
|
||||
child: GroupSelect(
|
||||
titleString: grouplistobj!
|
||||
.data![index].title!,
|
||||
image: grouplistobj
|
||||
?.data?[index]
|
||||
?.groupImage ??
|
||||
'',
|
||||
index: grouplistobj!
|
||||
.data![index].id!,
|
||||
isSelected: _selectedIndices
|
||||
.contains(grouplistobj!
|
||||
.data![index].id!),
|
||||
onTap: _onContainerTap,
|
||||
),
|
||||
);
|
||||
},
|
||||
),
|
||||
);
|
||||
}
|
||||
},
|
||||
),
|
||||
],
|
||||
),
|
||||
)),
|
||||
),
|
||||
],
|
||||
)),
|
||||
);
|
||||
}
|
||||
|
||||
Widget _buildNoDataBody(context) {
|
||||
return Center(
|
||||
child: Column(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
children: [
|
||||
Text(
|
||||
"No Data Found",
|
||||
style: TextStyle(
|
||||
color: Colors.white,
|
||||
fontSize: 16.sp,
|
||||
fontWeight: FontWeight.w600),
|
||||
)
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
class GroupSelect extends StatefulWidget {
|
||||
class GroupSelect extends StatelessWidget {
|
||||
final String titleString;
|
||||
final String image;
|
||||
final String? image;
|
||||
final int index;
|
||||
final Function(int) onTap;
|
||||
final bool isSelected;
|
||||
|
||||
GroupSelect({
|
||||
Key? key,
|
||||
required this.titleString,
|
||||
required this.image,
|
||||
required this.index,
|
||||
required this.onTap,
|
||||
required this.isSelected,
|
||||
}) : super(key: key);
|
||||
|
||||
@override
|
||||
State<GroupSelect> createState() => _GroupSelectState();
|
||||
}
|
||||
|
||||
class _GroupSelectState extends State<GroupSelect> {
|
||||
bool _text = false;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Column(crossAxisAlignment: CrossAxisAlignment.start, children: [
|
||||
@@ -271,24 +398,29 @@ class _GroupSelectState extends State<GroupSelect> {
|
||||
width: 169,
|
||||
height: 74,
|
||||
decoration: ShapeDecoration(
|
||||
image: DecorationImage(
|
||||
image: AssetImage(
|
||||
// "https://via.placeholder.com/169x74"
|
||||
widget.image),
|
||||
fit: BoxFit.fill,
|
||||
),
|
||||
image: image == null || image!.isEmpty
|
||||
? DecorationImage(
|
||||
image: AssetImage("assets/images/png/groupindividual3.png"),
|
||||
fit: BoxFit.fill,
|
||||
)
|
||||
: DecorationImage(
|
||||
image: NetworkImage(image!),
|
||||
fit: BoxFit.fill,
|
||||
),
|
||||
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(5)),
|
||||
),
|
||||
),
|
||||
sizedBoxHeight(15.h),
|
||||
text12400white(widget.titleString),
|
||||
sizedBoxHeight(15.h),
|
||||
SizedBox(height: 15.0),
|
||||
Text(
|
||||
titleString,
|
||||
style: TextStyle(
|
||||
color: Colors.white,
|
||||
fontSize: 12.0,
|
||||
overflow: TextOverflow.ellipsis),
|
||||
),
|
||||
SizedBox(height: 15.0),
|
||||
GestureDetector(
|
||||
onTap: () {
|
||||
setState(() {
|
||||
_text = !_text;
|
||||
});
|
||||
},
|
||||
onTap: () => onTap(index),
|
||||
child: Container(
|
||||
width: 169,
|
||||
height: 23,
|
||||
@@ -301,7 +433,11 @@ class _GroupSelectState extends State<GroupSelect> {
|
||||
child: Row(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [
|
||||
_text ? text10400white('Regrouping') : text10400white('Join')
|
||||
isSelected
|
||||
? Text('Regrouping',
|
||||
style: TextStyle(color: Colors.white, fontSize: 10.0))
|
||||
: Text('Join',
|
||||
style: TextStyle(color: Colors.white, fontSize: 10.0))
|
||||
],
|
||||
),
|
||||
),
|
||||
|
||||
@@ -1,13 +1,20 @@
|
||||
import 'dart:async';
|
||||
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:glassmorphism/glassmorphism.dart';
|
||||
import 'package:regroup/Common/base_manager.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/dialogs.dart';
|
||||
import 'package:regroup/Utils/texts.dart';
|
||||
import 'package:regroup/onboarding/Signup/Model/Onboarding/Individual/CommunitiesModel.dart';
|
||||
import 'package:regroup/onboarding/Signup/view_model/getmethod.dart';
|
||||
import 'package:regroup/onboarding/Signup/view_model/postmethod.dart';
|
||||
import 'package:regroup/resources/routes/route_name.dart';
|
||||
import 'package:remove_emoji_input_formatter/remove_emoji_input_formatter.dart';
|
||||
|
||||
@@ -20,58 +27,126 @@ class SelectIndividualCommunity extends StatefulWidget {
|
||||
}
|
||||
|
||||
class _SelectIndividualCommunityState extends State<SelectIndividualCommunity> {
|
||||
TextEditingController searchcontroller = TextEditingController();
|
||||
// StreamController<BlogsModel> blogsController = StreamController();
|
||||
StreamController<GetcommunitiesModel> searchcontroller = StreamController();
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
var updata = "";
|
||||
Getonboard().getCommunitysearch(updata, streamController: searchcontroller);
|
||||
|
||||
super.initState();
|
||||
}
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
searchcontroller.close();
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
final List<int> _selectedIndices = [];
|
||||
|
||||
void _onContainerTap(int id) {
|
||||
setState(() {
|
||||
if (_selectedIndices.contains(id)) {
|
||||
_selectedIndices.remove(id);
|
||||
} else {
|
||||
_selectedIndices.add(id);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
Uploadata() async {
|
||||
utils.loader();
|
||||
String selectedIndicesString = '[${_selectedIndices.join(',')}]';
|
||||
print('Selected Indices: $selectedIndicesString');
|
||||
Map<String, dynamic> updata = {
|
||||
"manage_community_xid": selectedIndicesString,
|
||||
};
|
||||
print('Payload: $updata');
|
||||
|
||||
final data = await Onboard().postCommunities(updata);
|
||||
if (data.status == ResponseStatus.SUCCESS) {
|
||||
// Get.back();
|
||||
print("groups selected");
|
||||
Get.toNamed(RouteName.communitycommitscreen);
|
||||
|
||||
return utils.showToast(data.message);
|
||||
} else {
|
||||
Get.back();
|
||||
print("Not done");
|
||||
return utils.showToast(data.message);
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
backgroundColor: Color.fromARGB(255, 18, 32, 47),
|
||||
body: Stack(
|
||||
children: [
|
||||
Positioned(top: 70, left: -30, child: CommonBlurLeftSecond()),
|
||||
Positioned(top: 400, right: -30, child: CommonBlurRightSecond()),
|
||||
Positioned(top: 630, left: -30, child: CommonBlurLeftBlue()),
|
||||
SingleChildScrollView(
|
||||
child: GlassmorphicContainer(
|
||||
width: MediaQuery.of(context).size.width,
|
||||
height:
|
||||
// 500.h,
|
||||
MediaQuery.of(context).size.height,
|
||||
borderRadius: 2,
|
||||
blur: 6,
|
||||
alignment: Alignment.bottomLeft,
|
||||
border: 2,
|
||||
linearGradient: LinearGradient(
|
||||
begin: Alignment.topCenter,
|
||||
end: Alignment.bottomCenter,
|
||||
colors: [
|
||||
Color(0XFF222935).withOpacity(0.60),
|
||||
Color(0XFF222935).withOpacity(0.60),
|
||||
Color(0XFF222935).withOpacity(0.60),
|
||||
Color(0XFF222935).withOpacity(0.60),
|
||||
return GestureDetector(
|
||||
onTap: () => FocusManager.instance.primaryFocus?.unfocus(),
|
||||
child: Scaffold(
|
||||
backgroundColor: Color.fromARGB(255, 18, 32, 47),
|
||||
bottomNavigationBar: Padding(
|
||||
padding: const EdgeInsets.only(bottom: 10, left: 16, right: 16),
|
||||
child: CustomButton(
|
||||
text: "Continue",
|
||||
onPressed: () {
|
||||
// Get.toNamed(RouteName.individualcommunitystep4);
|
||||
if (_selectedIndices.isEmpty) {
|
||||
utils.showToast('Please select activity');
|
||||
} else {
|
||||
print(_selectedIndices.toString());
|
||||
// String selectedIndicesString =
|
||||
// _selectedIndices.join(',');
|
||||
// print(
|
||||
// 'Selected Indices: [$selectedIndicesString]');
|
||||
Uploadata();
|
||||
}
|
||||
},
|
||||
),
|
||||
),
|
||||
body: Stack(
|
||||
children: [
|
||||
Positioned(top: 70, left: -30, child: CommonBlurLeftSecond()),
|
||||
Positioned(top: 400, right: -30, child: CommonBlurRightSecond()),
|
||||
Positioned(top: 630, left: -30, child: CommonBlurLeftBlue()),
|
||||
SingleChildScrollView(
|
||||
child: GlassmorphicContainer(
|
||||
width: MediaQuery.of(context).size.width,
|
||||
height:
|
||||
// 500.h,
|
||||
MediaQuery.of(context).size.height,
|
||||
borderRadius: 2,
|
||||
blur: 6,
|
||||
alignment: Alignment.bottomLeft,
|
||||
border: 2,
|
||||
linearGradient: LinearGradient(
|
||||
begin: Alignment.topCenter,
|
||||
end: Alignment.bottomCenter,
|
||||
colors: [
|
||||
Color(0XFF222935).withOpacity(0.60),
|
||||
Color(0XFF222935).withOpacity(0.60),
|
||||
Color(0XFF222935).withOpacity(0.60),
|
||||
Color(0XFF222935).withOpacity(0.60),
|
||||
|
||||
// Color.fromARGB(255, 18, 32, 47).withOpacity(0.50),
|
||||
// Color.fromARGB(255, 18, 32, 47).withOpacity(0.50),
|
||||
// Color.fromARGB(255, 18, 32, 47).withOpacity(0.50),
|
||||
// Color.fromARGB(255, 18, 32, 47).withOpacity(0.50),
|
||||
],
|
||||
),
|
||||
borderGradient: LinearGradient(
|
||||
begin: Alignment.topCenter,
|
||||
end: Alignment.bottomCenter,
|
||||
colors: [
|
||||
// Color.fromARGB(255, 18, 32, 47).withOpacity(0.50),
|
||||
// Color.fromARGB(255, 18, 32, 47).withOpacity(0.50),
|
||||
Color(0XFF222935).withOpacity(0.60),
|
||||
// Color.fromARGB(255, 18, 32, 47).withOpacity(0.50),
|
||||
// Color.fromARGB(255, 18, 32, 47).withOpacity(0.50),
|
||||
// Color.fromARGB(255, 18, 32, 47).withOpacity(0.50),
|
||||
// Color.fromARGB(255, 18, 32, 47).withOpacity(0.50),
|
||||
],
|
||||
),
|
||||
borderGradient: LinearGradient(
|
||||
begin: Alignment.topCenter,
|
||||
end: Alignment.bottomCenter,
|
||||
colors: [
|
||||
// Color.fromARGB(255, 18, 32, 47).withOpacity(0.50),
|
||||
// Color.fromARGB(255, 18, 32, 47).withOpacity(0.50),
|
||||
Color(0XFF222935).withOpacity(0.60),
|
||||
|
||||
Color(0XFF222935).withOpacity(0.60),
|
||||
],
|
||||
),
|
||||
child: Padding(
|
||||
padding:
|
||||
EdgeInsets.symmetric(horizontal: 16.w, vertical: 50.h),
|
||||
child: SingleChildScrollView(
|
||||
Color(0XFF222935).withOpacity(0.60),
|
||||
],
|
||||
),
|
||||
child: Padding(
|
||||
padding: EdgeInsets.symmetric(
|
||||
horizontal: 16.w, vertical: 50.h),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
@@ -96,7 +171,7 @@ class _SelectIndividualCommunityState extends State<SelectIndividualCommunity> {
|
||||
sizedBoxHeight(30.h),
|
||||
Align(
|
||||
alignment: Alignment.center,
|
||||
child: text16400white('Step 4 of 4')),
|
||||
child: text16400white('Step 3 of 3')),
|
||||
sizedBoxHeight(20.h),
|
||||
Container(
|
||||
width: double.infinity,
|
||||
@@ -114,9 +189,8 @@ class _SelectIndividualCommunityState extends State<SelectIndividualCommunity> {
|
||||
child: Row(
|
||||
children: [
|
||||
Expanded(
|
||||
child: Container(
|
||||
width: double.infinity,
|
||||
child: Container(
|
||||
// width: 216.w,
|
||||
height: 15.h,
|
||||
decoration: ShapeDecoration(
|
||||
gradient: LinearGradient(
|
||||
@@ -157,9 +231,7 @@ class _SelectIndividualCommunityState extends State<SelectIndividualCommunity> {
|
||||
),
|
||||
)
|
||||
],
|
||||
)),
|
||||
),
|
||||
)
|
||||
)))
|
||||
],
|
||||
),
|
||||
),
|
||||
@@ -193,7 +265,6 @@ class _SelectIndividualCommunityState extends State<SelectIndividualCommunity> {
|
||||
),
|
||||
sizedBoxHeight(30.h),
|
||||
CustomTextFormField(
|
||||
textEditingController: searchcontroller,
|
||||
texttype: TextInputType.text,
|
||||
hintText: "Search community",
|
||||
leadingIcon:
|
||||
@@ -216,75 +287,116 @@ class _SelectIndividualCommunityState extends State<SelectIndividualCommunity> {
|
||||
// LengthLimitingTextInputFormatter(20),
|
||||
RemoveEmojiInputFormatter(),
|
||||
],
|
||||
onInput: (value) {
|
||||
// Onboard().postGroupsearch({"search": value},
|
||||
// streamController: searchcontroller);
|
||||
// searchGroups(value!);
|
||||
Getonboard().getCommunitysearch(value,
|
||||
streamController: searchcontroller);
|
||||
},
|
||||
),
|
||||
sizedBoxHeight(30.h),
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
CommunitySelect(
|
||||
titleString: 'Liverpool FC ',
|
||||
image:
|
||||
'assets/images/png/groupindividual2.png'),
|
||||
CommunitySelect(
|
||||
titleString: 'Cambridge rugby Club',
|
||||
image: 'assets/images/png/community2.png'),
|
||||
CommunitySelect(
|
||||
titleString: 'Cambridge rugby Club',
|
||||
image: 'assets/images/png/community2.png'),
|
||||
],
|
||||
StreamBuilder<GetcommunitiesModel>(
|
||||
stream: searchcontroller.stream,
|
||||
builder: (ctx, snapshot) {
|
||||
if (snapshot.connectionState ==
|
||||
ConnectionState.waiting) {
|
||||
// Display shimmer effect while waiting for data
|
||||
return Center(
|
||||
child: CircularProgressIndicator());
|
||||
} else if (snapshot.hasError) {
|
||||
// Handle error state
|
||||
return Center(
|
||||
child: Text(
|
||||
'${snapshot.error} occurred',
|
||||
style: TextStyle(fontSize: 18),
|
||||
),
|
||||
);
|
||||
} else {
|
||||
// Data has been loaded, show actual UI
|
||||
return communitylistobj!.data!.isEmpty
|
||||
? _buildNoDataBody(context)
|
||||
: Expanded(
|
||||
child: GridView.builder(
|
||||
physics: ScrollPhysics(),
|
||||
gridDelegate:
|
||||
SliverGridDelegateWithFixedCrossAxisCount(
|
||||
crossAxisCount: 2,
|
||||
crossAxisSpacing: 12.0,
|
||||
mainAxisSpacing: 12.0,
|
||||
),
|
||||
itemCount:
|
||||
communitylistobj!.data!.length,
|
||||
itemBuilder: (context, index) {
|
||||
return SizedBox(
|
||||
height:
|
||||
150.0, // Adjust this height according to your design
|
||||
child: CommunitySelect(
|
||||
titleString: communitylistobj!
|
||||
.data![index]
|
||||
.communityName!,
|
||||
image: communitylistobj
|
||||
?.data?[index]
|
||||
?.communityProfilePhoto ??
|
||||
'',
|
||||
index: communitylistobj!
|
||||
.data![index].id!,
|
||||
isSelected: _selectedIndices
|
||||
.contains(communitylistobj!
|
||||
.data![index].id!),
|
||||
onTap: _onContainerTap,
|
||||
),
|
||||
);
|
||||
},
|
||||
),
|
||||
);
|
||||
}
|
||||
},
|
||||
),
|
||||
sizedBoxHeight(30.h),
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
CommunitySelect(
|
||||
titleString: 'The athletic town',
|
||||
image:
|
||||
'assets/images/png/groupindividual3.png'),
|
||||
CommunitySelect(
|
||||
titleString: 'Football Fever',
|
||||
image:
|
||||
'assets/images/png/groupindividual2.png'),
|
||||
CommunitySelect(
|
||||
titleString: 'Football Fever',
|
||||
image:
|
||||
'assets/images/png/groupindividual2.png'),
|
||||
],
|
||||
),
|
||||
// Spacer(flex: 1),
|
||||
sizedBoxHeight(40.h),
|
||||
CustomButton(
|
||||
text: "Continue",
|
||||
onPressed: () {
|
||||
Get.toNamed(RouteName.communitycommitscreen);
|
||||
})
|
||||
],
|
||||
),
|
||||
),
|
||||
)),
|
||||
),
|
||||
],
|
||||
));
|
||||
)),
|
||||
),
|
||||
],
|
||||
)),
|
||||
);
|
||||
}
|
||||
|
||||
Widget _buildNoDataBody(context) {
|
||||
return Center(
|
||||
child: Column(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
children: [
|
||||
Text(
|
||||
"No Data Found",
|
||||
style: TextStyle(
|
||||
color: Colors.white,
|
||||
fontSize: 16.sp,
|
||||
fontWeight: FontWeight.w600),
|
||||
)
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
class CommunitySelect extends StatefulWidget {
|
||||
class CommunitySelect extends StatelessWidget {
|
||||
final String titleString;
|
||||
final String image;
|
||||
final String? image;
|
||||
final int index;
|
||||
final Function(int) onTap;
|
||||
final bool isSelected;
|
||||
|
||||
CommunitySelect({
|
||||
Key? key,
|
||||
required this.titleString,
|
||||
required this.image,
|
||||
required this.index,
|
||||
required this.onTap,
|
||||
required this.isSelected,
|
||||
}) : super(key: key);
|
||||
|
||||
@override
|
||||
State<CommunitySelect> createState() => _CommunitySelectState();
|
||||
}
|
||||
|
||||
class _CommunitySelectState extends State<CommunitySelect> {
|
||||
bool _text = false;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Column(crossAxisAlignment: CrossAxisAlignment.center, children: [
|
||||
@@ -292,29 +404,34 @@ class _CommunitySelectState extends State<CommunitySelect> {
|
||||
width: 73.w,
|
||||
height: 73.h,
|
||||
decoration: ShapeDecoration(
|
||||
image: DecorationImage(
|
||||
image: AssetImage(
|
||||
// "https://via.placeholder.com/169x74"
|
||||
widget.image),
|
||||
fit: BoxFit.fill,
|
||||
),
|
||||
image: image == null || image!.isEmpty
|
||||
? DecorationImage(
|
||||
image: AssetImage("assets/images/png/groupindividual2.png"),
|
||||
fit: BoxFit.fill,
|
||||
)
|
||||
: DecorationImage(
|
||||
image: NetworkImage(image!),
|
||||
fit: BoxFit.fill,
|
||||
),
|
||||
shape: RoundedRectangleBorder(
|
||||
borderRadius: BorderRadius.circular(100),
|
||||
),
|
||||
),
|
||||
),
|
||||
sizedBoxHeight(15.h),
|
||||
SizedBox(width: 94.w, child: text12400white(widget.titleString)),
|
||||
Text(
|
||||
titleString,
|
||||
style: TextStyle(
|
||||
color: Colors.white,
|
||||
fontSize: 12.0,
|
||||
overflow: TextOverflow.ellipsis),
|
||||
),
|
||||
sizedBoxHeight(15.h),
|
||||
GestureDetector(
|
||||
onTap: () {
|
||||
setState(() {
|
||||
_text = !_text;
|
||||
});
|
||||
},
|
||||
onTap: () => onTap(index),
|
||||
child: Container(
|
||||
width: 100.w,
|
||||
height: 23.h,
|
||||
width: 169,
|
||||
height: 23,
|
||||
decoration: ShapeDecoration(
|
||||
shape: RoundedRectangleBorder(
|
||||
side: BorderSide(width: 1, color: Color(0xFFFF002B)),
|
||||
@@ -324,7 +441,11 @@ class _CommunitySelectState extends State<CommunitySelect> {
|
||||
child: Row(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [
|
||||
_text ? text10400white('Regrouping') : text10400white('Join')
|
||||
isSelected
|
||||
? Text('Regrouping',
|
||||
style: TextStyle(color: Colors.white, fontSize: 10.0))
|
||||
: Text('Join',
|
||||
style: TextStyle(color: Colors.white, fontSize: 10.0))
|
||||
],
|
||||
),
|
||||
),
|
||||
|
||||
@@ -1,11 +1,14 @@
|
||||
import 'dart:developer';
|
||||
import 'dart:io';
|
||||
|
||||
import 'package:dio/dio.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:get/get.dart' hide MultipartFile, FormData;
|
||||
import 'package:glassmorphism/glassmorphism.dart';
|
||||
import 'package:regroup/Common/CommonWidget.dart';
|
||||
import 'package:regroup/Common/base_manager.dart';
|
||||
import 'package:regroup/Common/controller/profileimagecontroller.dart';
|
||||
import 'package:regroup/Utils/Common/CommonDropdown.dart';
|
||||
import 'package:regroup/Utils/Common/CustomNextButton.dart';
|
||||
@@ -15,8 +18,10 @@ 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/Signup/view_model/postmethod.dart';
|
||||
import 'package:regroup/resources/routes/route_name.dart';
|
||||
import 'package:remove_emoji_input_formatter/remove_emoji_input_formatter.dart';
|
||||
import 'package:path/path.dart' as path;
|
||||
|
||||
class TellusaboutIndividual extends StatefulWidget {
|
||||
const TellusaboutIndividual({super.key});
|
||||
@@ -29,6 +34,8 @@ class _TellusaboutIndividualState extends State<TellusaboutIndividual> {
|
||||
TextEditingController fullNameController = TextEditingController();
|
||||
TextEditingController userNameController = TextEditingController();
|
||||
TextEditingController datecontroller = TextEditingController();
|
||||
TextEditingController locationcontroller = TextEditingController();
|
||||
|
||||
DateTime? _selectedDate;
|
||||
final photographController = TextEditingController();
|
||||
|
||||
@@ -73,27 +80,35 @@ class _TellusaboutIndividualState extends State<TellusaboutIndividual> {
|
||||
);
|
||||
if (pickedDate != null) {
|
||||
// if (pickedDate.isBefore(eighteenYearsAgo)) {
|
||||
|
||||
setState(() {
|
||||
// selectedDate.value = pickedDate;
|
||||
_selectedDate = pickedDate;
|
||||
datecontroller.text =
|
||||
"${_selectedDate!.day.toString().padLeft(2, '0')}-${_selectedDate!.month.toString().padLeft(2, '0')}-${_selectedDate!.year.toString().padLeft(2, '0')}";
|
||||
"${_selectedDate!.year.toString().padLeft(2, '0')}-${_selectedDate!.month.toString().padLeft(2, '0')}-${_selectedDate!.day.toString().padLeft(2, '0')}";
|
||||
});
|
||||
// }
|
||||
// else {
|
||||
// // } else {
|
||||
// showDialog(
|
||||
// context: context,
|
||||
// builder: (context) {
|
||||
// return AlertDialog(
|
||||
// title: const Text("Age Restriction"),
|
||||
// content: const Text("Sorry, you must be above 18 years age"),
|
||||
// backgroundColor: Colors.black,
|
||||
// title: const Text(
|
||||
// "Age Restriction",
|
||||
// style: TextStyle(color: Colors.white),
|
||||
// ),
|
||||
// content: const Text(
|
||||
// "Sorry, you must be above 18 years age",
|
||||
// style: TextStyle(color: Colors.white),
|
||||
// ),
|
||||
// actions: [
|
||||
// TextButton(
|
||||
// onPressed: () {
|
||||
// Navigator.of(context).pop();
|
||||
// },
|
||||
// child: const Text("OK"),
|
||||
// child: const Text(
|
||||
// "OK",
|
||||
// style: TextStyle(color: Colors.white),
|
||||
// ),
|
||||
// ),
|
||||
// ],
|
||||
// );
|
||||
@@ -113,122 +128,142 @@ class _TellusaboutIndividualState extends State<TellusaboutIndividual> {
|
||||
});
|
||||
}
|
||||
|
||||
void TellusUploadData() async {
|
||||
utils.loader();
|
||||
var imageFile;
|
||||
if (editProfileImage.profilePicPath.value.isNotEmpty) {
|
||||
imageFile = await MultipartFile.fromFile(
|
||||
editProfileImage.profilePicPath.value,
|
||||
filename: path.basename(editProfileImage.profilePicPath.value),
|
||||
);
|
||||
}
|
||||
// else {
|
||||
// imageFile = await Helper.assetImageToMultipartFile(
|
||||
// "assets/images/png/camera.png", "profile");
|
||||
// }
|
||||
|
||||
FormData formData = FormData.fromMap({
|
||||
"full_name": fullNameController.text,
|
||||
"username": userNameController.text,
|
||||
"date_of_birth": datecontroller.text,
|
||||
"gender": _selectedgendertype,
|
||||
'profile_photo':
|
||||
// editProfileImage.profilePicPath.value.isNotEmpty ?
|
||||
imageFile,
|
||||
// : null,
|
||||
'location': locationcontroller.text,
|
||||
});
|
||||
|
||||
print("formData is $formData");
|
||||
log(formData.toString());
|
||||
final data = await Onboard().PosttellusIndividual(formData);
|
||||
if (data.status == ResponseStatus.SUCCESS) {
|
||||
utils.showToast("tell us done Successfully!");
|
||||
Get.back();
|
||||
// Get.toNamed(RouteName.individualprofilestep1);
|
||||
Get.toNamed(RouteName.individualactivitystep2);
|
||||
} else {
|
||||
Get.back();
|
||||
return utils.showToast(data.message);
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
backgroundColor: Color.fromARGB(255, 18, 32, 47),
|
||||
body: Stack(
|
||||
children: [
|
||||
Positioned(top: 70, left: -30, child: CommonBlurLeftSecond()),
|
||||
Positioned(top: 310, right: -30, child: CommonBlurRightSecond()),
|
||||
Positioned(top: 510, left: -30, child: CommonBlurLeftBlue()),
|
||||
GlassmorphicContainer(
|
||||
width: MediaQuery.of(context).size.width,
|
||||
height:
|
||||
// 500.h,
|
||||
MediaQuery.of(context).size.height,
|
||||
borderRadius: 2,
|
||||
blur: 6,
|
||||
alignment: Alignment.bottomLeft,
|
||||
border: 2,
|
||||
linearGradient: LinearGradient(
|
||||
begin: Alignment.topCenter,
|
||||
end: Alignment.bottomCenter,
|
||||
colors: [
|
||||
Color(0XFF222935).withOpacity(0.60),
|
||||
Color(0XFF222935).withOpacity(0.60),
|
||||
Color(0XFF222935).withOpacity(0.60),
|
||||
Color(0XFF222935).withOpacity(0.60),
|
||||
return GestureDetector(
|
||||
onTap: () => FocusManager.instance.primaryFocus?.unfocus(),
|
||||
child: Scaffold(
|
||||
backgroundColor: Color.fromARGB(255, 18, 32, 47),
|
||||
body: Stack(
|
||||
children: [
|
||||
Positioned(top: 70, left: -30, child: CommonBlurLeftSecond()),
|
||||
Positioned(top: 310, right: -30, child: CommonBlurRightSecond()),
|
||||
Positioned(top: 510, left: -30, child: CommonBlurLeftBlue()),
|
||||
GlassmorphicContainer(
|
||||
width: MediaQuery.of(context).size.width,
|
||||
height:
|
||||
// 500.h,
|
||||
MediaQuery.of(context).size.height,
|
||||
borderRadius: 2,
|
||||
blur: 6,
|
||||
alignment: Alignment.bottomLeft,
|
||||
border: 2,
|
||||
linearGradient: LinearGradient(
|
||||
begin: Alignment.topCenter,
|
||||
end: Alignment.bottomCenter,
|
||||
colors: [
|
||||
Color(0XFF222935).withOpacity(0.60),
|
||||
Color(0XFF222935).withOpacity(0.60),
|
||||
Color(0XFF222935).withOpacity(0.60),
|
||||
Color(0XFF222935).withOpacity(0.60),
|
||||
|
||||
// Color.fromARGB(255, 18, 32, 47).withOpacity(0.50),
|
||||
// Color.fromARGB(255, 18, 32, 47).withOpacity(0.50),
|
||||
// Color.fromARGB(255, 18, 32, 47).withOpacity(0.50),
|
||||
// Color.fromARGB(255, 18, 32, 47).withOpacity(0.50),
|
||||
],
|
||||
),
|
||||
borderGradient: LinearGradient(
|
||||
begin: Alignment.topCenter,
|
||||
end: Alignment.bottomCenter,
|
||||
colors: [
|
||||
// Color.fromARGB(255, 18, 32, 47).withOpacity(0.50),
|
||||
// Color.fromARGB(255, 18, 32, 47).withOpacity(0.50),
|
||||
Color(0XFF222935).withOpacity(0.60),
|
||||
// Color.fromARGB(255, 18, 32, 47).withOpacity(0.50),
|
||||
// Color.fromARGB(255, 18, 32, 47).withOpacity(0.50),
|
||||
// Color.fromARGB(255, 18, 32, 47).withOpacity(0.50),
|
||||
// Color.fromARGB(255, 18, 32, 47).withOpacity(0.50),
|
||||
],
|
||||
),
|
||||
borderGradient: LinearGradient(
|
||||
begin: Alignment.topCenter,
|
||||
end: Alignment.bottomCenter,
|
||||
colors: [
|
||||
// Color.fromARGB(255, 18, 32, 47).withOpacity(0.50),
|
||||
// Color.fromARGB(255, 18, 32, 47).withOpacity(0.50),
|
||||
Color(0XFF222935).withOpacity(0.60),
|
||||
|
||||
Color(0XFF222935).withOpacity(0.60),
|
||||
],
|
||||
),
|
||||
child: ListView(physics: ScrollPhysics(), children: [
|
||||
Padding(
|
||||
padding: EdgeInsets.symmetric(horizontal: 16.w),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
// const Spacer(flex: 1),
|
||||
sizedBoxHeight(50.h),
|
||||
Center(child: text20400white('Tell us about yourself')),
|
||||
sizedBoxHeight(10.w),
|
||||
Center(
|
||||
child: Container(
|
||||
width: 154,
|
||||
decoration: ShapeDecoration(
|
||||
shape: RoundedRectangleBorder(
|
||||
side: BorderSide(
|
||||
width: 1,
|
||||
strokeAlign: BorderSide.strokeAlignCenter,
|
||||
color: Color(0xFF858585),
|
||||
),
|
||||
),
|
||||
)),
|
||||
),
|
||||
sizedBoxHeight(20.h),
|
||||
GestureDetector(
|
||||
onTap: () {
|
||||
ImageUploadBottomSheet().showModal(
|
||||
context,
|
||||
false,
|
||||
(result) {
|
||||
print("File path is $result");
|
||||
editProfileImage.profilePicPath.value = result;
|
||||
var filenameresult = extractFileName(result);
|
||||
print("File name is $filenameresult");
|
||||
photographController.text = filenameresult;
|
||||
},
|
||||
);
|
||||
},
|
||||
child: Center(
|
||||
child: Column(
|
||||
children: [
|
||||
Stack(
|
||||
alignment: Alignment.center,
|
||||
children: [
|
||||
// Outer circle
|
||||
Container(
|
||||
width: 139.w,
|
||||
height: 139.h,
|
||||
decoration: BoxDecoration(
|
||||
shape: BoxShape.circle,
|
||||
color: Colors.transparent,
|
||||
border: Border.all(
|
||||
color: Color(0XFFD90B2E)
|
||||
.withOpacity(0.50),
|
||||
width: 2),
|
||||
Color(0XFF222935).withOpacity(0.60),
|
||||
],
|
||||
),
|
||||
child: ListView(physics: ScrollPhysics(), children: [
|
||||
Padding(
|
||||
padding: EdgeInsets.symmetric(horizontal: 16.w),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
// const Spacer(flex: 1),
|
||||
sizedBoxHeight(50.h),
|
||||
Center(
|
||||
child: text20400white('Tell us about yourself')),
|
||||
sizedBoxHeight(10.w),
|
||||
Center(
|
||||
child: Container(
|
||||
width: 154,
|
||||
decoration: ShapeDecoration(
|
||||
shape: RoundedRectangleBorder(
|
||||
side: BorderSide(
|
||||
width: 1,
|
||||
strokeAlign: BorderSide.strokeAlignCenter,
|
||||
color: Color(0xFF858585),
|
||||
),
|
||||
),
|
||||
// Middle circle
|
||||
Container(
|
||||
width: 119.w,
|
||||
height: 119.h,
|
||||
decoration: BoxDecoration(
|
||||
shape: BoxShape.circle,
|
||||
color: Colors.transparent,
|
||||
border: Border.all(
|
||||
color: Color(0XFFD90B2E)
|
||||
.withOpacity(0.50),
|
||||
width: 2),
|
||||
),
|
||||
),
|
||||
// Inner circle
|
||||
Container(
|
||||
)),
|
||||
),
|
||||
sizedBoxHeight(20.h),
|
||||
GestureDetector(
|
||||
onTap: () {
|
||||
ImageUploadBottomSheet().showModal(
|
||||
context,
|
||||
false,
|
||||
(result) {
|
||||
print("File path is $result");
|
||||
editProfileImage.profilePicPath.value =
|
||||
result;
|
||||
var filenameresult = extractFileName(result);
|
||||
print("File name is $filenameresult");
|
||||
photographController.text = filenameresult;
|
||||
},
|
||||
);
|
||||
},
|
||||
child: Center(
|
||||
child: Column(
|
||||
children: [
|
||||
Stack(
|
||||
alignment: Alignment.center,
|
||||
children: [
|
||||
// Outer circle
|
||||
Container(
|
||||
width: 139.w,
|
||||
height: 139.h,
|
||||
decoration: BoxDecoration(
|
||||
shape: BoxShape.circle,
|
||||
color: Colors.transparent,
|
||||
@@ -237,194 +272,241 @@ class _TellusaboutIndividualState extends State<TellusaboutIndividual> {
|
||||
.withOpacity(0.50),
|
||||
width: 2),
|
||||
),
|
||||
child: Obx(() =>
|
||||
// editProfileImage
|
||||
// .profilePicPath.value !=
|
||||
// ''
|
||||
// ?
|
||||
editProfileImage.profilePicPath
|
||||
.value !=
|
||||
''
|
||||
? ClipOval(
|
||||
child: SizedBox.fromSize(
|
||||
size: Size.fromRadius(
|
||||
50.r),
|
||||
child: Image(
|
||||
image: FileImage(
|
||||
File(
|
||||
editProfileImage
|
||||
.profilePicPath
|
||||
.value,
|
||||
),
|
||||
// Middle circle
|
||||
Container(
|
||||
width: 119.w,
|
||||
height: 119.h,
|
||||
decoration: BoxDecoration(
|
||||
shape: BoxShape.circle,
|
||||
color: Colors.transparent,
|
||||
border: Border.all(
|
||||
color: Color(0XFFD90B2E)
|
||||
.withOpacity(0.50),
|
||||
width: 2),
|
||||
),
|
||||
),
|
||||
// Inner circle
|
||||
Container(
|
||||
decoration: BoxDecoration(
|
||||
shape: BoxShape.circle,
|
||||
color: Colors.transparent,
|
||||
border: Border.all(
|
||||
color: Color(0XFFD90B2E)
|
||||
.withOpacity(0.50),
|
||||
width: 2),
|
||||
),
|
||||
child: Obx(() =>
|
||||
// editProfileImage
|
||||
// .profilePicPath.value !=
|
||||
// ''
|
||||
// ?
|
||||
editProfileImage.profilePicPath
|
||||
.value !=
|
||||
''
|
||||
? ClipOval(
|
||||
child:
|
||||
SizedBox.fromSize(
|
||||
size: Size.fromRadius(
|
||||
50.r),
|
||||
child: Image(
|
||||
image: FileImage(
|
||||
File(
|
||||
editProfileImage
|
||||
.profilePicPath
|
||||
.value,
|
||||
),
|
||||
),
|
||||
fit: BoxFit.cover,
|
||||
width: 200.w,
|
||||
height: 200.h,
|
||||
),
|
||||
fit: BoxFit.cover,
|
||||
width: 200.w,
|
||||
height: 200.h,
|
||||
),
|
||||
),
|
||||
)
|
||||
: Image.asset(
|
||||
"assets/images/png/camera.png")
|
||||
// : Image.asset(
|
||||
// "assets/images/png/camera.png")
|
||||
)),
|
||||
// Main button
|
||||
],
|
||||
),
|
||||
const SizedBox(height: 9),
|
||||
text16400white('Add profile picture')
|
||||
],
|
||||
)),
|
||||
),
|
||||
sizedBoxHeight(20.h),
|
||||
text16400white('Full name'),
|
||||
sizedBoxHeight(10.h),
|
||||
CustomTextFormField(
|
||||
textEditingController: fullNameController,
|
||||
texttype: TextInputType.text,
|
||||
hintText: "Enter your full name",
|
||||
leadingIcon:
|
||||
// const Icon(Icons.mail_outline),
|
||||
Image.asset(
|
||||
width: 22.w,
|
||||
height: 17.h,
|
||||
'assets/images/png/user.png',
|
||||
)
|
||||
: Image.asset(
|
||||
"assets/images/png/camera.png")
|
||||
// : Image.asset(
|
||||
// "assets/images/png/camera.png")
|
||||
)),
|
||||
// Main button
|
||||
],
|
||||
),
|
||||
const SizedBox(height: 9),
|
||||
text16400white('Add profile picture')
|
||||
],
|
||||
)),
|
||||
),
|
||||
// validatorText: "Enter your full name",
|
||||
validator: (value) {
|
||||
if (value!.isEmpty) {
|
||||
return 'Enter your full name ';
|
||||
}
|
||||
return null;
|
||||
},
|
||||
inputFormatters: [
|
||||
// LengthLimitingTextInputFormatter(20),
|
||||
RemoveEmojiInputFormatter(),
|
||||
FilteringTextInputFormatter.allow(
|
||||
RegExp('[a-zA-Z ]'))
|
||||
],
|
||||
),
|
||||
sizedBoxHeight(0.h),
|
||||
text16400white('User name'),
|
||||
sizedBoxHeight(10.h),
|
||||
CustomTextFormField(
|
||||
textEditingController: userNameController,
|
||||
texttype: TextInputType.text,
|
||||
hintText: "Enter your user name",
|
||||
leadingIcon:
|
||||
// const Icon(Icons.mail_outline),
|
||||
Image.asset(
|
||||
width: 22.w,
|
||||
height: 17.h,
|
||||
'assets/images/png/user.png',
|
||||
),
|
||||
// validatorText: "Enter your user name",
|
||||
validator: (value) {
|
||||
if (value!.isEmpty) {
|
||||
return 'Enter your user name ';
|
||||
}
|
||||
return null;
|
||||
},
|
||||
inputFormatters: [
|
||||
// LengthLimitingTextInputFormatter(20),
|
||||
RemoveEmojiInputFormatter(),
|
||||
FilteringTextInputFormatter.allow(
|
||||
RegExp('[a-zA-Z ]'))
|
||||
],
|
||||
),
|
||||
sizedBoxHeight(0.h),
|
||||
text16400white('Date of birth'),
|
||||
sizedBoxHeight(10.h),
|
||||
CustomTextFormField(
|
||||
textEditingController: datecontroller,
|
||||
readonly: true,
|
||||
onTap: () {
|
||||
_selectDate(context);
|
||||
},
|
||||
// texttype: TextInputType.text,
|
||||
hintText: "Enter your date of birth",
|
||||
leadingIcon:
|
||||
// const Icon(Icons.mail_outline),
|
||||
Image.asset(
|
||||
width: 22.w,
|
||||
height: 17.h,
|
||||
'assets/images/png/dateimage.png',
|
||||
),
|
||||
// validatorText: "Enter date of birth",
|
||||
validator: (value) {
|
||||
if (value!.isEmpty) {
|
||||
return 'Enter your date of birth';
|
||||
}
|
||||
return null;
|
||||
},
|
||||
),
|
||||
sizedBoxHeight(0.h),
|
||||
text16400white('Gender'),
|
||||
sizedBoxHeight(10.h),
|
||||
CustomDropDownWidgetSignup(
|
||||
header: 'Select gender',
|
||||
title: '',
|
||||
listData: _gender,
|
||||
onItemSelected: _onItemSelected,
|
||||
leadingImage:
|
||||
Image.asset('assets/images/png/gendericon.png'),
|
||||
),
|
||||
sizedBoxHeight(20.h),
|
||||
Row(
|
||||
children: [
|
||||
text16400white('Location'),
|
||||
sizedBoxWidth(5.w),
|
||||
Image.asset('assets/images/png/informationicon.png')
|
||||
],
|
||||
),
|
||||
sizedBoxHeight(10.h),
|
||||
CustomTextFormField(
|
||||
textEditingController: userNameController,
|
||||
texttype: TextInputType.text,
|
||||
hintText: "Enter your location",
|
||||
leadingIcon:
|
||||
// const Icon(Icons.mail_outline),
|
||||
Image.asset(
|
||||
width: 22.w,
|
||||
height: 17.h,
|
||||
'assets/images/png/location.png',
|
||||
),
|
||||
// validatorText: "Enter your location",
|
||||
validator: (value) {
|
||||
if (value!.isEmpty) {
|
||||
return 'Enter your location ';
|
||||
}
|
||||
return null;
|
||||
},
|
||||
inputFormatters: [
|
||||
// LengthLimitingTextInputFormatter(20),
|
||||
RemoveEmojiInputFormatter(),
|
||||
FilteringTextInputFormatter.allow(
|
||||
RegExp('[a-zA-Z ]'))
|
||||
],
|
||||
),
|
||||
sizedBoxHeight(20.h),
|
||||
CustomButton(
|
||||
text: "Continue",
|
||||
onPressed: () {
|
||||
if (_selectedgendertype.isNotEmpty) {
|
||||
Get.toNamed(RouteName.individualprofilestep1);
|
||||
|
||||
// Get.to(() => BusinessPage());
|
||||
} else {
|
||||
// Handle case where no selection is made
|
||||
utils.showToast('Please select an gender type');
|
||||
sizedBoxHeight(20.h),
|
||||
text16400white('Full name'),
|
||||
sizedBoxHeight(10.h),
|
||||
CustomTextFormField(
|
||||
textEditingController: fullNameController,
|
||||
texttype: TextInputType.text,
|
||||
hintText: "Enter your full name",
|
||||
leadingIcon:
|
||||
// const Icon(Icons.mail_outline),
|
||||
Image.asset(
|
||||
width: 22.w,
|
||||
height: 17.h,
|
||||
'assets/images/png/user.png',
|
||||
),
|
||||
// validatorText: "Enter your full name",
|
||||
validator: (value) {
|
||||
if (value!.isEmpty) {
|
||||
return 'Enter your full name ';
|
||||
}
|
||||
}),
|
||||
sizedBoxHeight(30.h),
|
||||
// const Spacer(
|
||||
// flex: 3,
|
||||
// )
|
||||
],
|
||||
return null;
|
||||
},
|
||||
inputFormatters: [
|
||||
// LengthLimitingTextInputFormatter(20),
|
||||
RemoveEmojiInputFormatter(),
|
||||
FilteringTextInputFormatter.allow(
|
||||
RegExp('[a-zA-Z ]'))
|
||||
],
|
||||
),
|
||||
sizedBoxHeight(10.h),
|
||||
text16400white('User name'),
|
||||
sizedBoxHeight(10.h),
|
||||
CustomTextFormField(
|
||||
textEditingController: userNameController,
|
||||
texttype: TextInputType.text,
|
||||
hintText: "Enter your user name",
|
||||
leadingIcon:
|
||||
// const Icon(Icons.mail_outline),
|
||||
Image.asset(
|
||||
width: 22.w,
|
||||
height: 17.h,
|
||||
'assets/images/png/user.png',
|
||||
),
|
||||
// validatorText: "Enter your user name",
|
||||
validator: (value) {
|
||||
if (value!.isEmpty) {
|
||||
return 'Enter your user name ';
|
||||
}
|
||||
return null;
|
||||
},
|
||||
inputFormatters: [
|
||||
// LengthLimitingTextInputFormatter(20),
|
||||
RemoveEmojiInputFormatter(),
|
||||
FilteringTextInputFormatter.allow(
|
||||
RegExp('[a-zA-Z ]'))
|
||||
],
|
||||
),
|
||||
sizedBoxHeight(10.h),
|
||||
text16400white('Date of birth'),
|
||||
sizedBoxHeight(10.h),
|
||||
CustomTextFormField(
|
||||
textEditingController: datecontroller,
|
||||
readonly: true,
|
||||
onTap: () {
|
||||
_selectDate(context);
|
||||
},
|
||||
// texttype: TextInputType.text,
|
||||
hintText: "Enter your date of birth",
|
||||
leadingIcon:
|
||||
// const Icon(Icons.mail_outline),
|
||||
Image.asset(
|
||||
width: 22.w,
|
||||
height: 17.h,
|
||||
'assets/images/png/dateimage.png',
|
||||
),
|
||||
// validatorText: "Enter date of birth",
|
||||
validator: (value) {
|
||||
if (value!.isEmpty) {
|
||||
return 'Enter your date of birth';
|
||||
}
|
||||
return null;
|
||||
},
|
||||
),
|
||||
sizedBoxHeight(10.h),
|
||||
text16400white('Gender'),
|
||||
sizedBoxHeight(10.h),
|
||||
CustomDropDownWidgetSignup(
|
||||
header: 'Select gender',
|
||||
title: '',
|
||||
listData: _gender,
|
||||
onItemSelected: _onItemSelected,
|
||||
leadingImage:
|
||||
Image.asset('assets/images/png/gendericon.png'),
|
||||
),
|
||||
sizedBoxHeight(10.h),
|
||||
Row(
|
||||
children: [
|
||||
text16400white('Location'),
|
||||
sizedBoxWidth(5.w),
|
||||
Image.asset(
|
||||
'assets/images/png/informationicon.png')
|
||||
],
|
||||
),
|
||||
sizedBoxHeight(10.h),
|
||||
CustomTextFormField(
|
||||
textEditingController: locationcontroller,
|
||||
texttype: TextInputType.text,
|
||||
hintText: "Enter your location",
|
||||
leadingIcon:
|
||||
// const Icon(Icons.mail_outline),
|
||||
Image.asset(
|
||||
width: 22.w,
|
||||
height: 17.h,
|
||||
'assets/images/png/location.png',
|
||||
),
|
||||
// validatorText: "Enter your location",
|
||||
validator: (value) {
|
||||
if (value!.isEmpty) {
|
||||
return 'Enter your location ';
|
||||
}
|
||||
return null;
|
||||
},
|
||||
inputFormatters: [
|
||||
// LengthLimitingTextInputFormatter(20),
|
||||
RemoveEmojiInputFormatter(),
|
||||
FilteringTextInputFormatter.allow(
|
||||
RegExp('[a-zA-Z ]'))
|
||||
],
|
||||
),
|
||||
sizedBoxHeight(20.h),
|
||||
CustomButton(
|
||||
text: "Continue",
|
||||
onPressed: () {
|
||||
if (
|
||||
// isValid!
|
||||
// fullNameController.text.isBlank! &&
|
||||
// userNameController.text.isBlank! &&
|
||||
// datecontroller.text.isBlank! &&
|
||||
// _selectedgendertype.isEmpty &&
|
||||
// locationcontroller.text.isBlank! &&
|
||||
// editProfileImage.profilePicPath.value ==
|
||||
// ''
|
||||
fullNameController.text.isBlank! ||
|
||||
userNameController.text.isBlank! ||
|
||||
datecontroller.text.isBlank! ||
|
||||
_selectedgendertype.isEmpty ||
|
||||
locationcontroller.text.isBlank! ||
|
||||
editProfileImage.profilePicPath.value ==
|
||||
'') {
|
||||
utils.showToast('Please fill all fields');
|
||||
} else {
|
||||
TellusUploadData();
|
||||
}
|
||||
// if (_selectedgendertype.isNotEmpty) {
|
||||
// Get.toNamed(RouteName.individualprofilestep1);
|
||||
|
||||
// // Get.to(() => BusinessPage());
|
||||
// } else {
|
||||
// // Handle case where no selection is made
|
||||
// utils.showToast('Please select an gender type');
|
||||
// }
|
||||
}),
|
||||
sizedBoxHeight(30.h),
|
||||
// const Spacer(
|
||||
// flex: 3,
|
||||
// )
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
])),
|
||||
],
|
||||
));
|
||||
])),
|
||||
],
|
||||
)),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,12 +2,14 @@ import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.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/CommonDropdown.dart';
|
||||
import 'package:regroup/Utils/Common/CustomTextformfield.dart';
|
||||
import 'package:regroup/Utils/Common/CustomNextButton.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/Signup/view_model/postmethod.dart';
|
||||
import 'package:regroup/resources/routes/route_name.dart';
|
||||
import 'package:remove_emoji_input_formatter/remove_emoji_input_formatter.dart';
|
||||
|
||||
@@ -23,11 +25,18 @@ class _SignupScreenState extends State<SignupScreen> {
|
||||
TextEditingController passwordController = TextEditingController();
|
||||
TextEditingController confirmpasscontroller = TextEditingController();
|
||||
|
||||
final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
|
||||
|
||||
List<String> _dropdownProductItems = [
|
||||
'Individual',
|
||||
'Business',
|
||||
];
|
||||
|
||||
final Map<String, int> _accountTypeMap = {
|
||||
'Individual': 1,
|
||||
'Business': 2,
|
||||
};
|
||||
|
||||
String _selectedAccountType = '';
|
||||
|
||||
void _onItemSelected(String value) {
|
||||
@@ -36,363 +45,453 @@ 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);
|
||||
// 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');
|
||||
// }
|
||||
// }
|
||||
|
||||
Uploadata() async {
|
||||
utils.loader();
|
||||
int accountTypeValue = _accountTypeMap[_selectedAccountType] ?? 0;
|
||||
Map<String, dynamic> updata = {
|
||||
"email_address": emailidcontroller.text,
|
||||
"password": passwordController.text,
|
||||
"account_type": accountTypeValue,
|
||||
};
|
||||
final data = await Onboard().Postregisteration(updata);
|
||||
if (data.status == ResponseStatus.SUCCESS) {
|
||||
Get.back();
|
||||
print("Sign up done");
|
||||
|
||||
String selectedCategory = _selectedAccountType;
|
||||
|
||||
Get.toNamed(RouteName.verifyusercreen,
|
||||
arguments:
|
||||
{
|
||||
"emailid" : emailidcontroller.text,
|
||||
"password" : passwordController.text,
|
||||
"accounttype" : selectedCategory,
|
||||
'accountypenumber' : accountTypeValue
|
||||
|
||||
}
|
||||
|
||||
);
|
||||
|
||||
// if (selectedCategory == "Individual") {
|
||||
// Get.toNamed(RouteName.verifyusercreen,
|
||||
// arguments:
|
||||
// {
|
||||
// "emailid" : emailidcontroller.text,
|
||||
// "password" : passwordController.text,
|
||||
// "accounttype" : selectedCategory,
|
||||
// 'accountypenumber' : accountTypeValue
|
||||
|
||||
// }
|
||||
|
||||
// );
|
||||
// } else if (selectedCategory == "Individual") {
|
||||
// Get.toNamed(RouteName.verifyusercreen,
|
||||
// arguments:
|
||||
// {
|
||||
// "emailid" : emailidcontroller.text,
|
||||
// "password" : passwordController.text,
|
||||
// "accounttype" : selectedCategory,
|
||||
// 'accountypenumber' : accountTypeValue
|
||||
|
||||
// }
|
||||
// );
|
||||
// }
|
||||
|
||||
return utils.showToast(data.message);
|
||||
} else {
|
||||
utils.showToast('Please select an account type');
|
||||
Get.back();
|
||||
print("registration not done");
|
||||
return utils.showToast(data.message);
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
resizeToAvoidBottomInset: false,
|
||||
backgroundColor: const Color.fromARGB(255, 18, 32, 47),
|
||||
body: Stack(
|
||||
children: [
|
||||
Container(
|
||||
decoration: const BoxDecoration(
|
||||
image: DecorationImage(
|
||||
image: AssetImage("assets/images/png/Choice screen.png"),
|
||||
fit: BoxFit.fill)),
|
||||
),
|
||||
Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Padding(
|
||||
padding: EdgeInsets.only(top: 150.h),
|
||||
child: Center(child: text22400white('Create account')),
|
||||
),
|
||||
Expanded(
|
||||
child: SingleChildScrollView(
|
||||
child: Padding(
|
||||
padding: EdgeInsets.symmetric(
|
||||
horizontal: 16.w, vertical: 30.h),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
text16400white('Email address'),
|
||||
sizedBoxHeight(10.h),
|
||||
CustomTextFormField(
|
||||
textEditingController: emailidcontroller,
|
||||
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,
|
||||
),
|
||||
),
|
||||
// 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(20),
|
||||
RemoveEmojiInputFormatter()
|
||||
],
|
||||
),
|
||||
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,
|
||||
),
|
||||
// const Icon(Icons.lock_outline),
|
||||
// validationMessage: "Enter your password",
|
||||
validator: (val) {
|
||||
if (val == null || val.isEmpty) {
|
||||
return 'Please enter your password';
|
||||
}
|
||||
return null;
|
||||
},
|
||||
inputFormatters: [
|
||||
LengthLimitingTextInputFormatter(20),
|
||||
RemoveEmojiInputFormatter()
|
||||
],
|
||||
),
|
||||
sizedBoxHeight(10.h),
|
||||
text16400white('Confirm password'),
|
||||
sizedBoxHeight(10.h),
|
||||
CustomTextFormField(
|
||||
isInputPassword: true,
|
||||
textEditingController: confirmpasscontroller,
|
||||
hintText: "Enter your password",
|
||||
leadingIcon: Image.asset(
|
||||
'assets/images/png/lock.png',
|
||||
width: 22.w,
|
||||
height: 17.h,
|
||||
),
|
||||
// const Icon(Icons.lock_outline),
|
||||
// validatorText: "Enter your password",
|
||||
validator: (val) {
|
||||
if (val == null || val.isEmpty) {
|
||||
return 'Please enter your password';
|
||||
}
|
||||
if (val != passwordController.text) {
|
||||
return 'Password does not match';
|
||||
}
|
||||
return null;
|
||||
},
|
||||
inputFormatters: [
|
||||
LengthLimitingTextInputFormatter(20),
|
||||
RemoveEmojiInputFormatter()
|
||||
],
|
||||
),
|
||||
sizedBoxHeight(10.h),
|
||||
Row(
|
||||
return GestureDetector(
|
||||
onTap: () => FocusManager.instance.primaryFocus?.unfocus(),
|
||||
child: Scaffold(
|
||||
resizeToAvoidBottomInset: false,
|
||||
backgroundColor: const Color.fromARGB(255, 18, 32, 47),
|
||||
body: Stack(
|
||||
children: [
|
||||
Container(
|
||||
decoration: const BoxDecoration(
|
||||
image: DecorationImage(
|
||||
image:
|
||||
AssetImage("assets/images/png/Choice screen.png"),
|
||||
fit: BoxFit.fill)),
|
||||
),
|
||||
Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Padding(
|
||||
padding: EdgeInsets.only(top: 150.h),
|
||||
child: Center(child: text22400white('Create account')),
|
||||
),
|
||||
Expanded(
|
||||
child: SingleChildScrollView(
|
||||
child: Padding(
|
||||
padding: EdgeInsets.symmetric(
|
||||
horizontal: 16.w, vertical: 30.h),
|
||||
child: Form(
|
||||
key: _formKey,
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
text16400white('Account type'),
|
||||
sizedBoxWidth(5.w),
|
||||
Image.asset(
|
||||
'assets/images/png/informationicon.png')
|
||||
],
|
||||
),
|
||||
sizedBoxHeight(10.h),
|
||||
CustomDropDownRadio(
|
||||
header: 'Select account type',
|
||||
title: '',
|
||||
listData: [
|
||||
'Individual',
|
||||
'Business',
|
||||
],
|
||||
onItemSelected: _onItemSelected,
|
||||
leadingImage: Image.asset(
|
||||
'assets/images/png/user.png',
|
||||
),
|
||||
),
|
||||
sizedBoxHeight(30.h),
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [
|
||||
SizedBox(
|
||||
width: 320.w,
|
||||
height: 42.h,
|
||||
child: Text.rich(
|
||||
TextSpan(
|
||||
children: [
|
||||
TextSpan(
|
||||
text:
|
||||
'By signing up to ReGroup you agree to our ',
|
||||
style: TextStyle(
|
||||
color: const Color(0xCCFCFCFC),
|
||||
fontSize: 14.sp,
|
||||
fontFamily: 'Helvetica',
|
||||
fontWeight: FontWeight.w400,
|
||||
),
|
||||
),
|
||||
TextSpan(
|
||||
text: 'Terms and Conditions',
|
||||
style: TextStyle(
|
||||
color: const Color(0xCCFCFCFC),
|
||||
fontSize: 14.sp,
|
||||
fontFamily: 'Helvetica',
|
||||
fontWeight: FontWeight.w700,
|
||||
decoration: TextDecoration.underline,
|
||||
decorationColor:
|
||||
const Color(0xffFCFCFC)
|
||||
.withOpacity(0.80),
|
||||
),
|
||||
),
|
||||
TextSpan(
|
||||
text: ' and ',
|
||||
style: TextStyle(
|
||||
color: const Color(0xCCFCFCFC),
|
||||
fontSize: 14.sp,
|
||||
fontFamily: 'Helvetica',
|
||||
fontWeight: FontWeight.w400,
|
||||
),
|
||||
),
|
||||
TextSpan(
|
||||
text: 'Privacy Policy',
|
||||
style: TextStyle(
|
||||
color: const Color(0xCCFCFCFC),
|
||||
fontSize: 14.sp,
|
||||
fontFamily: 'Helvetica',
|
||||
fontWeight: FontWeight.w700,
|
||||
decoration: TextDecoration.underline,
|
||||
decorationColor:
|
||||
const Color(0xffFCFCFC)
|
||||
.withOpacity(0.80),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
textAlign: TextAlign.center,
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
sizedBoxHeight(20.h),
|
||||
CustomButton(
|
||||
text: "Continue",
|
||||
onPressed: () {
|
||||
_Signincheck();
|
||||
}),
|
||||
sizedBoxHeight(20.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),
|
||||
),
|
||||
text16400white('Email address'),
|
||||
sizedBoxHeight(10.h),
|
||||
CustomTextFormField(
|
||||
textEditingController: emailidcontroller,
|
||||
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,
|
||||
),
|
||||
),
|
||||
// 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(50),
|
||||
RemoveEmojiInputFormatter()
|
||||
],
|
||||
),
|
||||
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(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,
|
||||
),
|
||||
// const Icon(Icons.lock_outline),
|
||||
// validationMessage: "Enter your password",
|
||||
validator: (val) {
|
||||
if (val == null || val.isEmpty) {
|
||||
return 'Please enter your password';
|
||||
}
|
||||
return null;
|
||||
},
|
||||
inputFormatters: [
|
||||
LengthLimitingTextInputFormatter(50),
|
||||
RemoveEmojiInputFormatter()
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
sizedBoxHeight(20.h),
|
||||
Center(
|
||||
child: SizedBox(
|
||||
width: 220.w,
|
||||
child: Row(
|
||||
sizedBoxHeight(10.h),
|
||||
text16400white('Confirm password'),
|
||||
sizedBoxHeight(10.h),
|
||||
CustomTextFormField(
|
||||
isInputPassword: true,
|
||||
textEditingController: confirmpasscontroller,
|
||||
hintText: "Enter your password",
|
||||
leadingIcon: Image.asset(
|
||||
'assets/images/png/lock.png',
|
||||
width: 22.w,
|
||||
height: 17.h,
|
||||
),
|
||||
// const Icon(Icons.lock_outline),
|
||||
// validatorText: "Enter your password",
|
||||
validator: (val) {
|
||||
if (val == null || val.isEmpty) {
|
||||
return 'Please enter your password';
|
||||
}
|
||||
if (val != passwordController.text) {
|
||||
return 'Password does not match';
|
||||
}
|
||||
return null;
|
||||
},
|
||||
inputFormatters: [
|
||||
LengthLimitingTextInputFormatter(50),
|
||||
RemoveEmojiInputFormatter()
|
||||
],
|
||||
),
|
||||
sizedBoxHeight(10.h),
|
||||
Row(
|
||||
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'))),
|
||||
),
|
||||
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(),
|
||||
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'))),
|
||||
text16400white('Account type'),
|
||||
sizedBoxWidth(5.w),
|
||||
Image.asset(
|
||||
'assets/images/png/informationicon.png')
|
||||
],
|
||||
),
|
||||
sizedBoxHeight(10.h),
|
||||
CustomDropDownRadio(
|
||||
header: 'Select account type',
|
||||
title: '',
|
||||
listData: [
|
||||
'Individual',
|
||||
'Business',
|
||||
],
|
||||
onItemSelected: _onItemSelected,
|
||||
leadingImage: Image.asset(
|
||||
'assets/images/png/user.png',
|
||||
),
|
||||
),
|
||||
sizedBoxHeight(30.h),
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [
|
||||
SizedBox(
|
||||
width: 320.w,
|
||||
height: 42.h,
|
||||
child: Text.rich(
|
||||
TextSpan(
|
||||
children: [
|
||||
TextSpan(
|
||||
text:
|
||||
'By signing up to ReGroup you agree to our ',
|
||||
style: TextStyle(
|
||||
color: const Color(0xCCFCFCFC),
|
||||
fontSize: 14.sp,
|
||||
fontFamily: 'Helvetica',
|
||||
fontWeight: FontWeight.w400,
|
||||
),
|
||||
),
|
||||
TextSpan(
|
||||
text: 'Terms and Conditions',
|
||||
style: TextStyle(
|
||||
color: const Color(0xCCFCFCFC),
|
||||
fontSize: 14.sp,
|
||||
fontFamily: 'Helvetica',
|
||||
fontWeight: FontWeight.w700,
|
||||
decoration:
|
||||
TextDecoration.underline,
|
||||
decorationColor:
|
||||
const Color(0xffFCFCFC)
|
||||
.withOpacity(0.80),
|
||||
),
|
||||
),
|
||||
TextSpan(
|
||||
text: ' and ',
|
||||
style: TextStyle(
|
||||
color: const Color(0xCCFCFCFC),
|
||||
fontSize: 14.sp,
|
||||
fontFamily: 'Helvetica',
|
||||
fontWeight: FontWeight.w400,
|
||||
),
|
||||
),
|
||||
TextSpan(
|
||||
text: 'Privacy Policy',
|
||||
style: TextStyle(
|
||||
color: const Color(0xCCFCFCFC),
|
||||
fontSize: 14.sp,
|
||||
fontFamily: 'Helvetica',
|
||||
fontWeight: FontWeight.w700,
|
||||
decoration:
|
||||
TextDecoration.underline,
|
||||
decorationColor:
|
||||
const Color(0xffFCFCFC)
|
||||
.withOpacity(0.80),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
textAlign: TextAlign.center,
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
sizedBoxHeight(20.h),
|
||||
CustomButton(
|
||||
text: "Continue",
|
||||
onPressed: () {
|
||||
// _Signincheck();
|
||||
final isValid =
|
||||
_formKey.currentState?.validate();
|
||||
if (
|
||||
// isValid!
|
||||
emailidcontroller.text.isBlank! &&
|
||||
passwordController.text.isBlank! &&
|
||||
confirmpasscontroller
|
||||
.text.isBlank! &&
|
||||
_selectedAccountType.isEmpty) {
|
||||
print(emailidcontroller.text);
|
||||
print(passwordController.text);
|
||||
print(_selectedAccountType.toString());
|
||||
utils.showToast('Please fill all fields');
|
||||
} else {
|
||||
Uploadata();
|
||||
}
|
||||
}),
|
||||
sizedBoxHeight(20.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,
|
||||
child: Row(
|
||||
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'))),
|
||||
),
|
||||
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(),
|
||||
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(20.h),
|
||||
],
|
||||
),
|
||||
sizedBoxHeight(20.h),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
)
|
||||
],
|
||||
),
|
||||
],
|
||||
));
|
||||
)
|
||||
],
|
||||
),
|
||||
],
|
||||
)),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,13 +4,18 @@ 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/Global.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/Signup/view_model/postmethod.dart';
|
||||
import 'package:regroup/resources/routes/route_name.dart';
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
import 'package:timer_button/timer_button.dart';
|
||||
|
||||
class VerifyuserScreenState extends StatefulWidget {
|
||||
const VerifyuserScreenState({super.key});
|
||||
@@ -20,8 +25,61 @@ class VerifyuserScreenState extends StatefulWidget {
|
||||
}
|
||||
|
||||
class _VerifyuserScreenStateState extends State<VerifyuserScreenState> {
|
||||
String accounttype = Get.arguments;
|
||||
TextEditingController? pincode = TextEditingController();
|
||||
// String accounttype = Get.arguments;
|
||||
TextEditingController pincode = TextEditingController();
|
||||
|
||||
String email = Get.arguments['emailid'];
|
||||
String userpassword = Get.arguments['password'];
|
||||
String accounttype = Get.arguments['accounttype'];
|
||||
int accounttypenumber = Get.arguments["accountypenumber"];
|
||||
|
||||
Uploadata() async {
|
||||
utils.loader();
|
||||
Map<String, dynamic> updata = {
|
||||
"email_address": email,
|
||||
"password": userpassword,
|
||||
"account_type": accounttypenumber,
|
||||
"otp": pincode.text
|
||||
};
|
||||
final data = await Onboard().Postverifyregisteration(updata);
|
||||
if (data.status == ResponseStatus.SUCCESS) {
|
||||
Get.back();
|
||||
print("verification done");
|
||||
|
||||
if (accounttype == 'Individual') {
|
||||
print('individual selected');
|
||||
Get.toNamed(RouteName.tellusindividualscreen);
|
||||
} else if (accounttype == 'Business') {
|
||||
print('business selected');
|
||||
Get.toNamed(RouteName.tellusbusinessscreen);
|
||||
}
|
||||
|
||||
return utils.showToast(data.message);
|
||||
} else {
|
||||
Get.back();
|
||||
print("verification not done");
|
||||
return utils.showToast(data.message);
|
||||
}
|
||||
}
|
||||
|
||||
Uploadataresendotp() async {
|
||||
utils.loader();
|
||||
Map<String, dynamic> updata = {
|
||||
"email_address": email,
|
||||
"password": userpassword,
|
||||
"account_type": accounttypenumber,
|
||||
};
|
||||
final data = await Onboard().Postregisteration(updata);
|
||||
if (data.status == ResponseStatus.SUCCESS) {
|
||||
Get.back();
|
||||
print("resend up done");
|
||||
return utils.showToast(data.message);
|
||||
} else {
|
||||
Get.back();
|
||||
print("resend not done");
|
||||
return utils.showToast(data.message);
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
@@ -80,7 +138,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 $email'),
|
||||
sizedBoxHeight(40.h),
|
||||
text16400white('Enter code'),
|
||||
sizedBoxHeight(20.h),
|
||||
@@ -141,22 +199,46 @@ class _VerifyuserScreenStateState extends State<VerifyuserScreenState> {
|
||||
},
|
||||
appContext: context,
|
||||
),
|
||||
sizedBoxHeight(10.h),
|
||||
Center(
|
||||
child: TimerButton(
|
||||
disabledTextStyle: TextStyle(color: Colors.red),
|
||||
activeTextStyle: TextStyle(color: Colors.white),
|
||||
disabledColor: Color(0XFF222935).withOpacity(0.10),
|
||||
buttonType: ButtonType.textButton,
|
||||
label: "Resend OTP",
|
||||
timeOutInSeconds: 120,
|
||||
//mobile.text.isEmpty ? 1 : 60,
|
||||
onPressed: () {
|
||||
setState(() {
|
||||
Uploadataresendotp();
|
||||
});
|
||||
},
|
||||
// disabledColor: Colors.white,
|
||||
color: Color(0XFF222935).withOpacity(0.10),
|
||||
),
|
||||
),
|
||||
const Spacer(
|
||||
flex: 3,
|
||||
),
|
||||
CustomButton(
|
||||
text: 'Continue',
|
||||
onPressed: () {
|
||||
if (pincode!.text.isEmpty) {
|
||||
if (pincode.text.isEmpty) {
|
||||
utils.showToast('Pin field is empty');
|
||||
} else if (pincode.text.length < 4) {
|
||||
utils.showToast(
|
||||
'Pin field must be at least 4 characters long');
|
||||
} else {
|
||||
if (accounttype == 'Individual') {
|
||||
print('individual selected');
|
||||
Get.toNamed(RouteName.tellusindividualscreen);
|
||||
} else if (accounttype == 'Business') {
|
||||
print('business selected');
|
||||
Get.toNamed(RouteName.tellusbusinessscreen);
|
||||
}
|
||||
Uploadata();
|
||||
|
||||
// if (accounttype == 'Individual') {
|
||||
// print('individual selected');
|
||||
// Get.toNamed(RouteName.tellusindividualscreen);
|
||||
// } else if (accounttype == 'Business') {
|
||||
// print('business selected');
|
||||
// Get.toNamed(RouteName.tellusbusinessscreen);
|
||||
// }
|
||||
}
|
||||
}),
|
||||
const Spacer(
|
||||
|
||||
65
lib/onboarding/Signup/view_model/getmethod.dart
Normal file
65
lib/onboarding/Signup/view_model/getmethod.dart
Normal file
@@ -0,0 +1,65 @@
|
||||
import 'dart:async';
|
||||
import 'dart:developer';
|
||||
|
||||
import 'package:regroup/Common/api_urls.dart';
|
||||
import 'package:regroup/Common/base_manager.dart';
|
||||
import 'package:regroup/Common/controller/data/network/network_api.dart';
|
||||
import 'package:regroup/onboarding/Signup/Model/Onboarding/Individual/CommunitiesModel.dart';
|
||||
import 'package:regroup/onboarding/Signup/Model/Onboarding/Individual/GroupModel.dart';
|
||||
import 'package:regroup/onboarding/Signup/Model/Onboarding/IndividualModel.dart';
|
||||
|
||||
|
||||
GetIndividualactivityModel? indiactivityobj;
|
||||
GrouplistModel? grouplistobj;
|
||||
GetcommunitiesModel? communitylistobj;
|
||||
|
||||
|
||||
|
||||
|
||||
class Getonboard {
|
||||
|
||||
Future<ResponseData<dynamic>> getIndividualactivity() async {
|
||||
final response = await NetworkApiServices()
|
||||
.getApi(
|
||||
ApiUrls.getIndividualactivity,
|
||||
// optionalpar: false
|
||||
);
|
||||
if (response.status == ResponseStatus.SUCCESS) {
|
||||
indiactivityobj = GetIndividualactivityModel.fromJson(response.data);
|
||||
log(indiactivityobj!.data.toString());
|
||||
}
|
||||
return response;
|
||||
}
|
||||
|
||||
Future<ResponseData<dynamic>> getGroupsearch(updata,
|
||||
{required StreamController<GrouplistModel> streamController}) async {
|
||||
final response =
|
||||
await NetworkApiServices().getApi(
|
||||
"${ApiUrls.getgroups}?search_data=$updata",
|
||||
|
||||
);
|
||||
|
||||
if (response.status == ResponseStatus.SUCCESS) {
|
||||
grouplistobj = GrouplistModel.fromJson(response.data);
|
||||
if (!streamController.isClosed) streamController.sink.add(grouplistobj!);
|
||||
}
|
||||
return response;
|
||||
}
|
||||
|
||||
|
||||
Future<ResponseData<dynamic>> getCommunitysearch(updata,
|
||||
{required StreamController<GetcommunitiesModel> streamController}) async {
|
||||
final response =
|
||||
await NetworkApiServices().getApi(
|
||||
"${ApiUrls.getcommunities}?search_data=$updata",
|
||||
|
||||
);
|
||||
|
||||
if (response.status == ResponseStatus.SUCCESS) {
|
||||
communitylistobj = GetcommunitiesModel.fromJson(response.data);
|
||||
if (!streamController.isClosed) streamController.sink.add(communitylistobj!);
|
||||
}
|
||||
return response;
|
||||
}
|
||||
|
||||
}
|
||||
85
lib/onboarding/Signup/view_model/postmethod.dart
Normal file
85
lib/onboarding/Signup/view_model/postmethod.dart
Normal file
@@ -0,0 +1,85 @@
|
||||
import 'dart:async';
|
||||
|
||||
import 'package:regroup/Common/api_urls.dart';
|
||||
import 'package:regroup/Common/base_manager.dart';
|
||||
import 'package:regroup/Common/controller/data/network/network_api.dart';
|
||||
import 'package:regroup/Global.dart';
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
|
||||
|
||||
|
||||
class Onboard {
|
||||
Onboard();
|
||||
|
||||
Future<ResponseData<dynamic>> Postregisteration(updata) async {
|
||||
print("updata is $updata");
|
||||
final response = await NetworkApiServices()
|
||||
.postApi(updata, ApiUrls.registeration, optionalpar: true);
|
||||
print("response is ${response.data}");
|
||||
print("response message is ${response.message}");
|
||||
return response;
|
||||
}
|
||||
|
||||
Future<ResponseData<dynamic>> Postverifyregisteration(updata) async {
|
||||
print("updata is $updata");
|
||||
final response = await NetworkApiServices()
|
||||
.postApi(updata, ApiUrls.verifyregisteration, optionalpar: true);
|
||||
print("response is ${response.data}");
|
||||
print("response message is ${response.message}");
|
||||
final SharedPreferences prefs = await SharedPreferences.getInstance();
|
||||
Map<String, dynamic> res = response.data;
|
||||
print("res is $res");
|
||||
await prefs.setString('token', res['data']['token']);
|
||||
await prefs.setString('email', res['data']['email']);
|
||||
await prefs.setInt('isprofileupdate', res['data']['is_profile_updated']);
|
||||
|
||||
token = res['data']['token'];
|
||||
emailid = res['data']['email'];
|
||||
isprofileupdated = res['data']['is_profile_updated'];
|
||||
|
||||
print("token is $token");
|
||||
print("email is $emailid");
|
||||
print("profile update value is $isprofileupdated");
|
||||
|
||||
return response;
|
||||
}
|
||||
|
||||
Future<ResponseData> PosttellusIndividual(updata) async {
|
||||
print("updata is $updata");
|
||||
final response =
|
||||
await NetworkApiServices().postApi(updata, ApiUrls.tellusIndividual);
|
||||
print("response is ${response.data}");
|
||||
print("response message is ${response.message}");
|
||||
|
||||
return response;
|
||||
}
|
||||
|
||||
Future<ResponseData<dynamic>> PostIndividualActivity(updata) async {
|
||||
print("updata is $updata");
|
||||
final response = await NetworkApiServices()
|
||||
.postApi(updata, ApiUrls.postindividualactivity,);
|
||||
print("response is ${response.data}");
|
||||
print("response message is ${response.message}");
|
||||
return response;
|
||||
}
|
||||
|
||||
Future<ResponseData<dynamic>> postGroups(updata) async {
|
||||
print("updata is $updata");
|
||||
final response = await NetworkApiServices()
|
||||
.postApi(updata, ApiUrls.postgroups,);
|
||||
print("response is ${response.data}");
|
||||
print("response message is ${response.message}");
|
||||
return response;
|
||||
}
|
||||
|
||||
Future<ResponseData<dynamic>> postCommunities(updata) async {
|
||||
print("updata is $updata");
|
||||
final response = await NetworkApiServices()
|
||||
.postApi(updata, ApiUrls.postcommunities,);
|
||||
print("response is ${response.data}");
|
||||
print("response message is ${response.message}");
|
||||
return response;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -941,6 +941,14 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.6.1"
|
||||
timer_button:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: timer_button
|
||||
sha256: "448a67cc29a07e2696f8bd025f0ebd859cf156c35b4eeeee0121a728dceba7c9"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.1.1"
|
||||
timezone:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
||||
@@ -69,6 +69,7 @@ dependencies:
|
||||
statsfl: ^2.3.0
|
||||
glass_kit: ^4.0.1
|
||||
flutter_facebook_auth: ^6.0.4
|
||||
timer_button: ^2.1.1
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user