320 lines
11 KiB
Dart
320 lines
11 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:flutter/services.dart';
|
|
import 'package:get/get.dart';
|
|
|
|
import '../../../Controller/More/Editprofile/Editprofilecontroller.dart';
|
|
import '../../../Helper/Constants/Assetconstants.dart';
|
|
import '../../../Helper/Constants/Colorconstants.dart';
|
|
import '../../../Helper/custombutton.dart';
|
|
import '../../../Helper/customederaction.dart';
|
|
import '../../../Model/Response/User/Usermodelresponse.dart';
|
|
|
|
class EditProfile extends StatelessWidget {
|
|
UserDetails? data;
|
|
EditProfile({super.key,this.data});
|
|
|
|
EditProfileController editProfileController = Get.put(EditProfileController());
|
|
final scaffoldKey = GlobalKey<ScaffoldState>();
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return Scaffold(
|
|
backgroundColor: Colors.white,
|
|
body: SingleChildScrollView(
|
|
child: GetBuilder<EditProfileController>(
|
|
initState: (_){
|
|
editProfileController.userInfo = data;
|
|
editProfileController.getDetails();
|
|
},
|
|
builder: (controller) {
|
|
return Column(
|
|
mainAxisAlignment: MainAxisAlignment.start,
|
|
crossAxisAlignment: CrossAxisAlignment.start,
|
|
children: [
|
|
Stack(
|
|
alignment: Alignment.topLeft,
|
|
children: [
|
|
Container(
|
|
height: Get.height * 0.30,
|
|
width: Get.width,
|
|
decoration: const BoxDecoration(
|
|
image: DecorationImage(
|
|
image: AssetImage(
|
|
AssetConstants.nearleAppbarTop,
|
|
),
|
|
fit: BoxFit.fill),
|
|
// color: ColorConstants.primaryColor,
|
|
borderRadius: BorderRadius.only(
|
|
bottomLeft: Radius.elliptical(20, 20),
|
|
bottomRight: Radius.elliptical(20, 20))),
|
|
),
|
|
Padding(
|
|
padding: const EdgeInsets.only(top: 64, left: 20),
|
|
child: Row(
|
|
mainAxisAlignment: MainAxisAlignment.start,
|
|
crossAxisAlignment: CrossAxisAlignment.center,
|
|
children: [
|
|
CircleAvatar(
|
|
radius: 40,
|
|
backgroundColor: Colors.white,
|
|
child: SizedBox(
|
|
height: Get.height*0.08,
|
|
width: Get.width*0.7,
|
|
child: Image.asset(AssetConstants.nearleAppbarDarkLogo),
|
|
|
|
),
|
|
),
|
|
const SizedBox(
|
|
width: 45,
|
|
),
|
|
Column(
|
|
mainAxisAlignment: MainAxisAlignment.center,
|
|
crossAxisAlignment: CrossAxisAlignment.center,
|
|
children: [
|
|
const Text(
|
|
"Edit Profile",
|
|
style: TextStyle(
|
|
fontWeight: FontWeight.bold,
|
|
color: Colors.white,
|
|
fontSize: 24),
|
|
textAlign: TextAlign.start,
|
|
),
|
|
const SizedBox(
|
|
height: 5,
|
|
),
|
|
Text(
|
|
"+91 ${data?.contactno}",
|
|
style: const TextStyle(
|
|
fontWeight: FontWeight.normal,
|
|
color: Colors.white,
|
|
fontSize: 17),
|
|
),
|
|
],
|
|
),
|
|
|
|
],
|
|
),
|
|
),
|
|
],
|
|
),
|
|
|
|
Padding(
|
|
padding: const EdgeInsets.symmetric(vertical: 25.0,horizontal: 16),
|
|
child: Column(
|
|
crossAxisAlignment: CrossAxisAlignment.start,
|
|
mainAxisAlignment: MainAxisAlignment.center,
|
|
children: [
|
|
const SizedBox(height: 10,),
|
|
firstName(),
|
|
const SizedBox(height: 10,),
|
|
lastName(),
|
|
const SizedBox(height: 10,),
|
|
email(),
|
|
const SizedBox(height: 10,),
|
|
contactNo(),
|
|
|
|
|
|
],
|
|
),
|
|
),
|
|
|
|
|
|
],
|
|
);
|
|
}
|
|
),
|
|
),
|
|
bottomNavigationBar:Container(
|
|
height: Get.height*0.1,
|
|
width: Get.width,
|
|
decoration: const BoxDecoration(
|
|
image:DecorationImage(image:AssetImage(AssetConstants.nearleAppbarBottom,),fit: BoxFit.fill),
|
|
// color: ColorConstants.primaryColor,
|
|
borderRadius: BorderRadius.only(
|
|
bottomLeft: Radius.elliptical(3, 3),
|
|
bottomRight: Radius.elliptical(3, 3))),
|
|
child: Stack(
|
|
children: [
|
|
SizedBox(
|
|
height: Get.height*0.08,
|
|
child: submit()),
|
|
],
|
|
),
|
|
),
|
|
|
|
|
|
|
|
);
|
|
}
|
|
|
|
Widget firstName() {
|
|
return Container(
|
|
height: Get.height*0.07,
|
|
decoration: BoxDecoration(
|
|
color: ColorConstants.secondaryColor,
|
|
),
|
|
child: TextFormField(
|
|
textCapitalization: TextCapitalization.sentences,
|
|
inputFormatters: <TextInputFormatter>[
|
|
UpperCaseTextFormatter()
|
|
],
|
|
style: const TextStyle(fontFamily: 'Inter'),
|
|
decoration: CustomDecoration.textFieldStyle(
|
|
labelTextStr: 'Firstname',
|
|
prefixIcon: Icon(
|
|
Icons.person,
|
|
color: ColorConstants.darkGreyColor,
|
|
)),
|
|
|
|
controller: editProfileController.firstNameController,
|
|
onEditingComplete: () {
|
|
FocusScope.of(Get.context!).requestFocus(FocusNode());
|
|
},
|
|
),
|
|
);
|
|
}
|
|
Widget lastName() {
|
|
return Container(
|
|
height: Get.height*0.07,
|
|
decoration: BoxDecoration(
|
|
color: ColorConstants.secondaryColor,
|
|
),
|
|
child: TextFormField(
|
|
textCapitalization: TextCapitalization.sentences,
|
|
inputFormatters: <TextInputFormatter>[
|
|
UpperCaseTextFormatter()
|
|
],
|
|
style: const TextStyle(fontFamily: 'Inter'),
|
|
decoration: CustomDecoration.textFieldStyle(
|
|
labelTextStr: 'Lastname',
|
|
prefixIcon: Icon(
|
|
Icons.person,
|
|
color: ColorConstants.darkGreyColor,
|
|
)),
|
|
|
|
controller: editProfileController.lastNameController,
|
|
onEditingComplete: () {
|
|
FocusScope.of(Get.context!).requestFocus(FocusNode());
|
|
},
|
|
),
|
|
);
|
|
}
|
|
|
|
Widget email() {
|
|
return Container(
|
|
height: Get.height*0.07,
|
|
decoration: BoxDecoration(
|
|
color: ColorConstants.secondaryColor,
|
|
),
|
|
child: TextFormField(
|
|
style: const TextStyle(fontFamily: 'Inter'),
|
|
decoration: CustomDecoration.textFieldStyle(
|
|
labelTextStr: 'Email',
|
|
prefixIcon: Icon(
|
|
Icons.email_outlined,
|
|
color: ColorConstants.darkGreyColor,
|
|
)),
|
|
controller: editProfileController.emailController,
|
|
onEditingComplete: () {
|
|
FocusScope.of(Get.context!).requestFocus(FocusNode());
|
|
},
|
|
),
|
|
);
|
|
}
|
|
|
|
Widget contactNo() {
|
|
return Container(
|
|
height: Get.height*0.07,
|
|
decoration: BoxDecoration(
|
|
color: ColorConstants.secondaryColor,
|
|
),
|
|
child: TextFormField(
|
|
|
|
// enabled: false,
|
|
style: const TextStyle(fontFamily: 'Inter'),
|
|
buildCounter: (BuildContext context,
|
|
{int? currentLength, int? maxLength, bool? isFocused}) =>
|
|
null,
|
|
maxLength: 10,
|
|
keyboardType:
|
|
const TextInputType.numberWithOptions(signed: true, decimal: true),
|
|
decoration: CustomDecoration.textFieldStyle(
|
|
labelTextStr: 'Contact no',
|
|
// prefixIcon: Column(
|
|
// mainAxisAlignment: MainAxisAlignment.center,
|
|
// children: [
|
|
// SizedBox(
|
|
// width: Get.width * 0.3,
|
|
// height: Get.height * 0.04,
|
|
// child: Row(
|
|
// children: [
|
|
// const SizedBox(
|
|
// width: 25,
|
|
// ),
|
|
// InkWell(
|
|
// child: CountryPickerUtils.getDefaultFlagImage(
|
|
// editProfileController.selectedDialogCountry),
|
|
// // onTap: _openCountryPickerDialog,
|
|
// ),
|
|
// const SizedBox(
|
|
// width: 8,
|
|
// ),
|
|
// Text(
|
|
// "+${editProfileController.selectedDialogCountry.phoneCode}"),
|
|
// ],
|
|
// ),
|
|
// ),
|
|
// ],
|
|
// ),
|
|
prefixIcon: Icon(
|
|
Icons.phone,
|
|
color: ColorConstants.darkGreyColor,
|
|
)),
|
|
controller: editProfileController.contactNoController,
|
|
onEditingComplete: () {
|
|
FocusScope.of(Get.context!).requestFocus(FocusNode());
|
|
},
|
|
),
|
|
);
|
|
}
|
|
|
|
Widget submit(){
|
|
return GetBuilder<EditProfileController>(
|
|
builder: (controller) {
|
|
return RoundedButton(
|
|
height: Get.height*0.06,
|
|
width: Get.width*0.8,
|
|
onPressed: () {
|
|
controller.doSomething();
|
|
},
|
|
color: ColorConstants.primaryColor!,
|
|
title: 'Update',
|
|
controller: controller.btnController,
|
|
textStyle: const TextStyle(
|
|
fontSize: 18,
|
|
fontFamily: "Inter",
|
|
color: Colors.white,
|
|
fontWeight: FontWeight.bold),
|
|
);
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
class UpperCaseTextFormatter extends TextInputFormatter {
|
|
@override
|
|
TextEditingValue formatEditUpdate(TextEditingValue oldValue, TextEditingValue newValue) {
|
|
return TextEditingValue(
|
|
text: capitalize(newValue.text),
|
|
selection: newValue.selection,
|
|
);
|
|
}
|
|
}
|
|
String capitalize(String value) {
|
|
if(value.trim().isEmpty) return "";
|
|
return "${value[0].toUpperCase()}${value.substring(1)}";
|
|
} |