875 lines
45 KiB
Dart
875 lines
45 KiB
Dart
import 'dart:io';
|
|
|
|
import 'package:flutter/material.dart';
|
|
import 'package:flutter/services.dart';
|
|
import 'package:flutter_feather_icons/flutter_feather_icons.dart';
|
|
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
|
|
import 'package:image_picker/image_picker.dart';
|
|
import 'package:initial_folder/helper/user_info.dart';
|
|
import 'package:initial_folder/providers/profile_image_provider.dart';
|
|
import 'package:initial_folder/providers/theme_provider.dart';
|
|
import 'package:initial_folder/providers/update_data_diri_provider.dart';
|
|
import 'package:initial_folder/providers/data_diri_provider.dart';
|
|
import 'package:initial_folder/services/user_info_service.dart';
|
|
import 'package:initial_folder/size_config.dart';
|
|
import 'package:initial_folder/theme.dart';
|
|
import 'package:initial_folder/helper/validator.dart';
|
|
import 'package:initial_folder/widgets/login_regist/custom_profile_text_field.dart';
|
|
import 'package:initial_folder/providers/user_info_provider.dart' as userInfo;
|
|
import 'package:provider/provider.dart';
|
|
|
|
class DataDiri extends StatefulWidget {
|
|
@override
|
|
State<DataDiri> createState() => _DataDiriState();
|
|
}
|
|
|
|
class _DataDiriState extends State<DataDiri> {
|
|
final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
|
|
|
|
final List<String> gender = ['pria', 'wanita'];
|
|
void _handleGenderChange(String? value, DataDiriProvider state) {
|
|
setState(() {
|
|
newGender = value ?? '';
|
|
state.newGender = true;
|
|
isGenderEmpty = false;
|
|
});
|
|
}
|
|
|
|
late String newGender = '';
|
|
late String newName;
|
|
late String newBirthDate = '';
|
|
late String newHeadline;
|
|
late String newBiograpy;
|
|
late String newEmail;
|
|
late String newPhone;
|
|
late String newInstagram = '';
|
|
late String newTwitter = '';
|
|
late String newFacebook = '';
|
|
late String newLinkedin = '';
|
|
|
|
bool? isNameEmpty;
|
|
bool? isGenderEmpty;
|
|
bool? isBirthDateEmpty;
|
|
bool? isEmailEmpty;
|
|
bool? isPhoneEmpty;
|
|
|
|
DateTime birthDate = DateTime.now();
|
|
|
|
bool isLoading = false;
|
|
|
|
String? email = "";
|
|
|
|
void getUserEmail() async {
|
|
email = await UsersInfo().getEmail();
|
|
}
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
final themeProvider = Provider.of<ThemeProvider>(context);
|
|
final isDarkMode = Theme.of(context).brightness == Brightness.dark;
|
|
|
|
UpdateDataDiriProvider updateDataDiriProvider =
|
|
Provider.of<UpdateDataDiriProvider>(context);
|
|
|
|
ProfileImageProvider profileImageProvider =
|
|
Provider.of<ProfileImageProvider>(context, listen: false);
|
|
final ImagePicker _picker = ImagePicker();
|
|
|
|
Future _showMessage(String text) {
|
|
return showDialog(
|
|
context: context,
|
|
builder: (context) => AlertDialog(
|
|
shape: RoundedRectangleBorder(
|
|
borderRadius: BorderRadius.circular(10),
|
|
),
|
|
backgroundColor: Colors.white,
|
|
surfaceTintColor: Colors.transparent,
|
|
contentPadding: EdgeInsets.fromLTRB(22, 30, 22, 30),
|
|
content: Text(
|
|
text,
|
|
textAlign: TextAlign.center,
|
|
style: thirdTextStyle.copyWith(
|
|
fontSize: getProportionateScreenWidth(12),
|
|
color: baruTexthitam,
|
|
),
|
|
),
|
|
),
|
|
);
|
|
}
|
|
|
|
void takePhoto(ImageSource source) async {
|
|
try {
|
|
final XFile? pickedFile = await _picker.pickImage(source: source);
|
|
var imageFile = (pickedFile != null) ? File(pickedFile.path) : File('');
|
|
var email = await UsersInfo().getEmail();
|
|
if (await profileImageProvider.addProfileImage(pckFile: imageFile)) {
|
|
setState(() {
|
|
isLoading = true;
|
|
});
|
|
await Future.delayed(Duration(seconds: 2));
|
|
profileImageProvider.setImageFile(imageFile);
|
|
setState(() {
|
|
imageFile;
|
|
isLoading = false;
|
|
});
|
|
// await Provider.of<userInfo.UserInfoProvider>(context, listen: false)
|
|
// .getUserInfo(email);
|
|
|
|
_showMessage('Berhasil Upload Image');
|
|
}
|
|
} on PlatformException catch (e) {
|
|
print('Failed to pick image : $e');
|
|
}
|
|
}
|
|
|
|
Widget bottomSheet() {
|
|
return Container(
|
|
height: 100.0,
|
|
width: MediaQuery.of(context).size.width,
|
|
margin: EdgeInsets.symmetric(
|
|
horizontal: 20,
|
|
vertical: 20,
|
|
),
|
|
child: Column(
|
|
children: <Widget>[
|
|
Text(
|
|
"Choose Profile photo",
|
|
style: secondaryTextStyle.copyWith(fontSize: 20),
|
|
),
|
|
SizedBox(height: getProportionateScreenHeight(20)),
|
|
Row(
|
|
mainAxisAlignment: MainAxisAlignment.center,
|
|
children: [
|
|
TextButton.icon(
|
|
icon: Icon(Icons.camera),
|
|
onPressed: () {
|
|
Navigator.pop(context);
|
|
takePhoto(ImageSource.camera);
|
|
},
|
|
label: Text(
|
|
"Camera",
|
|
style: primaryTextStyle,
|
|
),
|
|
),
|
|
TextButton.icon(
|
|
icon: Icon(Icons.image),
|
|
onPressed: () {
|
|
Navigator.pop(context);
|
|
takePhoto(ImageSource.gallery);
|
|
},
|
|
label: Text("Gallery", style: primaryTextStyle),
|
|
),
|
|
],
|
|
),
|
|
],
|
|
),
|
|
);
|
|
}
|
|
|
|
Widget imageProfile(String? urlImage) {
|
|
return Stack(
|
|
alignment: AlignmentDirectional.center,
|
|
children: [
|
|
CircleAvatar(
|
|
radius: getProportionateScreenWidth(40),
|
|
backgroundColor: Colors.amber,
|
|
backgroundImage: profileImageProvider.imageFile != null
|
|
? FileImage(profileImageProvider.imageFile!) as ImageProvider
|
|
: urlImage != null
|
|
? NetworkImage(urlImage) as ImageProvider
|
|
: AssetImage("assets/images/Profile Image.png")
|
|
as ImageProvider,
|
|
),
|
|
CircleAvatar(
|
|
radius: getProportionateScreenWidth(40),
|
|
backgroundColor: Color(0xff000000).withOpacity(0.5),
|
|
),
|
|
IconButton(
|
|
onPressed: () {
|
|
showModalBottomSheet(
|
|
context: context,
|
|
builder: (context) => GestureDetector(
|
|
behavior: HitTestBehavior.opaque,
|
|
onTap: () {
|
|
Navigator.pop(context);
|
|
},
|
|
child: bottomSheet(),
|
|
),
|
|
);
|
|
},
|
|
icon: Icon(
|
|
Icons.camera_alt_outlined,
|
|
color: Colors.white,
|
|
),
|
|
)
|
|
],
|
|
);
|
|
}
|
|
|
|
return SafeArea(
|
|
child: ChangeNotifierProvider(
|
|
create: (context) =>
|
|
DataDiriProvider(userInfoService: UserInfoService()),
|
|
child: Consumer<DataDiriProvider>(
|
|
builder: (context, state, _) {
|
|
if (state.state == ResultStateData.Loading) {
|
|
return Scaffold(
|
|
body: Center(
|
|
child: CircularProgressIndicator(
|
|
color: secondaryColor,
|
|
strokeWidth: 2,
|
|
),
|
|
),
|
|
);
|
|
} else if (state.state == ResultStateData.HasData) {
|
|
var result = state.result!.data[0];
|
|
newGender = state.newGender ? newGender : result.gender ?? '';
|
|
return Scaffold(
|
|
appBar: AppBar(
|
|
elevation: 0.0,
|
|
backgroundColor: Theme.of(context).colorScheme.background,
|
|
centerTitle: true,
|
|
title: Text(
|
|
'Data Diri',
|
|
style: thirdTextStyle.copyWith(
|
|
letterSpacing: 0.23,
|
|
fontWeight: bold,
|
|
fontSize: getProportionateScreenWidth(14)),
|
|
),
|
|
actions: [
|
|
TextButton(
|
|
child: isLoading
|
|
? CircularProgressIndicator(
|
|
strokeWidth: 2,
|
|
valueColor: AlwaysStoppedAnimation(
|
|
Colors.white,
|
|
),
|
|
)
|
|
: Text('Simpan',
|
|
style: thirdTextStyle.copyWith(
|
|
color:themeProvider.themeData == ThemeClass.darkmode
|
|
?primaryColor : primaryColorligtmode,
|
|
fontWeight: reguler,
|
|
letterSpacing: 0.5,
|
|
fontSize: getProportionateScreenWidth(12))),
|
|
onPressed: () async {
|
|
setState(() {
|
|
isLoading = true;
|
|
});
|
|
if (this._formKey.currentState!.validate()) {
|
|
if (await updateDataDiriProvider.dataDiriUpdate(
|
|
fullname:
|
|
state.newName ? newName : result.fullname,
|
|
headline: state.newHeadline
|
|
? newHeadline
|
|
: result.headline,
|
|
biograph: state.newBiograpy
|
|
? newBiograpy
|
|
: result.biography,
|
|
twitter: state.newTwitter
|
|
? newTwitter
|
|
: result.socialLink?.twitter,
|
|
facebook: state.newFacebook
|
|
? newFacebook
|
|
: result.socialLink?.facebook,
|
|
linkedin: state.newLinkedin
|
|
? newLinkedin
|
|
: result.socialLink?.linkedin,
|
|
instagram: state.newInstagram
|
|
? newInstagram
|
|
: result.socialLink?.instagram,
|
|
phone: state.newPhone ? newPhone : result.phone,
|
|
// datebirth: state.isNewBirthDate
|
|
// ? newBirthDate
|
|
// : result.datebirth,
|
|
// gender:
|
|
// state.newGender ? newGender : result.gender,
|
|
email:
|
|
state.newEmail ? newEmail : result.email)) {
|
|
await Provider.of<DataDiriProvider>(context,
|
|
listen: false)
|
|
.getDataDiri();
|
|
_showMessage('Data diri berhasil diubah');
|
|
} else {
|
|
if (updateDataDiriProvider.updateDataDiriModel !=
|
|
null) {
|
|
dynamic updateDataDiriMessages =
|
|
updateDataDiriProvider
|
|
.updateDataDiriModel!.messages;
|
|
if (updateDataDiriMessages is! String) {
|
|
if (updateDataDiriMessages.fullname
|
|
is String) {
|
|
setState(() {
|
|
isNameEmpty = true;
|
|
});
|
|
}
|
|
|
|
if (updateDataDiriMessages.gender is String) {
|
|
setState(() {
|
|
isGenderEmpty = true;
|
|
});
|
|
}
|
|
|
|
if (updateDataDiriMessages.datebirth
|
|
is String) {
|
|
setState(() {
|
|
isBirthDateEmpty = true;
|
|
});
|
|
}
|
|
|
|
if (updateDataDiriMessages.phone is String) {
|
|
setState(() {
|
|
isPhoneEmpty = true;
|
|
});
|
|
}
|
|
|
|
if (updateDataDiriMessages.email is String) {
|
|
setState(() {
|
|
isEmailEmpty = true;
|
|
});
|
|
}
|
|
}
|
|
} else {
|
|
_showMessage('Silahkan Coba lagi');
|
|
}
|
|
|
|
if (state.newGender) {
|
|
if (newGender.isEmpty) {
|
|
setState(() {
|
|
isGenderEmpty = true;
|
|
});
|
|
}
|
|
} else {
|
|
if (result.gender == null) {
|
|
setState(() {
|
|
isGenderEmpty = true;
|
|
});
|
|
}
|
|
}
|
|
|
|
if (state.isNewBirthDate) {
|
|
if (newBirthDate.isEmpty) {
|
|
setState(() {
|
|
isBirthDateEmpty = true;
|
|
});
|
|
}
|
|
} else {
|
|
if (result.datebirth == null) {
|
|
setState(() {
|
|
isBirthDateEmpty = true;
|
|
});
|
|
}
|
|
}
|
|
}
|
|
}
|
|
setState(() {
|
|
isLoading = false;
|
|
});
|
|
})
|
|
],
|
|
),
|
|
body: ListView(
|
|
children: [
|
|
Container(
|
|
height: getProportionateScreenHeight(100),
|
|
// width: 360,
|
|
decoration: BoxDecoration(
|
|
color: Colors.grey[300],
|
|
image: DecorationImage(
|
|
image: AssetImage( isDarkMode
|
|
? 'assets/images/cover_dark.png'
|
|
: 'assets/images/cover_light.png'),
|
|
fit: BoxFit.cover,
|
|
),
|
|
),
|
|
// child: const Padding(
|
|
// padding: EdgeInsets.all(10),
|
|
// child: Align(
|
|
// alignment: Alignment.bottomRight,
|
|
// // child: Icon(
|
|
// // Icons.camera_alt,
|
|
// // color: Colors.white,
|
|
// // ),
|
|
// ),
|
|
// ),
|
|
),
|
|
Transform.translate(
|
|
offset: Offset(0, getProportionateScreenHeight(-45)),
|
|
child: Padding(
|
|
padding: EdgeInsets.all(16),
|
|
child: Column(
|
|
crossAxisAlignment: CrossAxisAlignment.start,
|
|
children: [
|
|
Center(
|
|
child: Consumer<userInfo.UserInfoProvider>(
|
|
builder: (context, state, _) {
|
|
if (state.state ==
|
|
userInfo.ResultState.Loading) {
|
|
return Center(
|
|
child: CircularProgressIndicator(
|
|
color: secondaryColor,
|
|
strokeWidth: 2,
|
|
),
|
|
);
|
|
} else if (state.state ==
|
|
userInfo.ResultState.HasData) {
|
|
return Center(
|
|
child: imageProfile(
|
|
state.result?.data[0].fotoProfile),
|
|
);
|
|
} else if (state.state ==
|
|
userInfo.ResultState.NoData) {
|
|
return Center(child: Text(state.message));
|
|
} else {
|
|
return Center(child: Text(''));
|
|
}
|
|
}),
|
|
),
|
|
SizedBox(height: getProportionateScreenHeight(16)),
|
|
Form(
|
|
key: _formKey,
|
|
child: Column(
|
|
children: [
|
|
CustomProfileTextField(
|
|
pad: getProportionateScreenWidth(2),
|
|
text: state.newName
|
|
? newName
|
|
: result.fullname ?? '',
|
|
hinttext: 'Tuliskan nama lengkap Anda',
|
|
title: 'Nama Lengkap*',
|
|
validate: validateName,
|
|
onChanged: (value) {
|
|
state.newName = true;
|
|
newName = value;
|
|
},
|
|
isErrorManual: isNameEmpty ?? false,
|
|
textErrorManual:
|
|
"Nama lengkap tidak boleh kosong",
|
|
),
|
|
CustomProfileTextField(
|
|
pad: getProportionateScreenWidth(2),
|
|
text: state.newHeadline
|
|
? newHeadline
|
|
: result.headline ?? '',
|
|
hinttext: 'Maksimal 60 kalimat',
|
|
title: 'Headline',
|
|
onChanged: (value) {
|
|
state.newHeadline = true;
|
|
newHeadline = value;
|
|
},
|
|
),
|
|
CustomProfileTextField(
|
|
pad: getProportionateScreenWidth(2),
|
|
text: state.newBiograpy
|
|
? newBiograpy
|
|
: result.biography ?? '',
|
|
hinttext: 'Tulis biografi singkat kamu',
|
|
title: 'Biografi',
|
|
minLines: 1,
|
|
maxLines: 5,
|
|
onChanged: (value) {
|
|
state.newBiograpy = true;
|
|
newBiograpy = value;
|
|
},
|
|
),
|
|
// Column(
|
|
// crossAxisAlignment:
|
|
// CrossAxisAlignment.start,
|
|
// children: [
|
|
// Text(
|
|
// 'Jenis Kelamin',
|
|
// style: thirdTextStyle.copyWith(
|
|
// fontWeight: semiBold,
|
|
// fontSize:
|
|
// getProportionateScreenWidth(
|
|
// 12),
|
|
// color: isDarkMode
|
|
// ? baruTextutih
|
|
// : baruTexthitam,
|
|
// letterSpacing: 0.5),
|
|
// ),
|
|
// Row(
|
|
// mainAxisAlignment:
|
|
// MainAxisAlignment.start,
|
|
// children: [
|
|
// Radio<String>(
|
|
// value: 'pria',
|
|
// groupValue: newGender,
|
|
// onChanged: (value) {
|
|
// _handleGenderChange(
|
|
// value, state);
|
|
// },
|
|
// ),
|
|
// Text(
|
|
// 'Laki-Laki',
|
|
// style: thirdTextStyle.copyWith(
|
|
// fontSize:
|
|
// getProportionateScreenWidth(
|
|
// 12),
|
|
// color: isDarkMode
|
|
// ? baruTextutih
|
|
// : baruTexthitam,
|
|
// letterSpacing: 0.5),
|
|
// ),
|
|
// Radio<String>(
|
|
// value: 'wanita',
|
|
// groupValue: newGender,
|
|
// onChanged: (value) {
|
|
// _handleGenderChange(
|
|
// value, state);
|
|
// },
|
|
// ),
|
|
// Text(
|
|
// 'Perempuan',
|
|
// style: thirdTextStyle.copyWith(
|
|
// fontSize:
|
|
// getProportionateScreenWidth(
|
|
// 12),
|
|
// color: isDarkMode
|
|
// ? baruTextutih
|
|
// : baruTexthitam,
|
|
// letterSpacing: 0.5),
|
|
// ),
|
|
// ],
|
|
// ),
|
|
// customTextValidator(isGenderEmpty,
|
|
// 'Jenis Kelamin tidak boleh kosong')
|
|
// ],
|
|
// ),
|
|
// SizedBox(height: 15),
|
|
// GestureDetector(
|
|
// child: Container(
|
|
// margin: EdgeInsets.only(
|
|
// bottom:
|
|
// getProportionateScreenWidth(20),
|
|
// ),
|
|
// child: Column(
|
|
// crossAxisAlignment:
|
|
// CrossAxisAlignment.start,
|
|
// children: [
|
|
// Text('Tanggal Lahir',
|
|
// style: secondaryTextStyle
|
|
// .copyWith(
|
|
// fontWeight: semiBold,
|
|
// fontSize:
|
|
// getProportionateScreenWidth(
|
|
// 12),
|
|
// color: isDarkMode
|
|
// ? baruTextutih
|
|
// : baruTexthitam,
|
|
// letterSpacing: 0.5)),
|
|
// SizedBox(
|
|
// height:
|
|
// getProportionateScreenWidth(
|
|
// 5),
|
|
// ),
|
|
// Container(
|
|
// width: double.infinity,
|
|
// height:
|
|
// getProportionateScreenWidth(
|
|
// 50),
|
|
// margin:
|
|
// EdgeInsets.only(bottom: 7),
|
|
// child: Row(
|
|
// mainAxisAlignment:
|
|
// MainAxisAlignment
|
|
// .spaceBetween,
|
|
// children: [
|
|
// Container(
|
|
// margin: EdgeInsets.only(
|
|
// left: 13),
|
|
// child: Text(
|
|
// state.isNewBirthDate
|
|
// ? newBirthDate
|
|
// : result.datebirth ??
|
|
// 'YYYY-MM-DD',
|
|
// style: primaryTextStyle
|
|
// .copyWith(
|
|
// fontSize:
|
|
// getProportionateScreenWidth(
|
|
// 12),
|
|
// color: state
|
|
// .isNewBirthDate
|
|
// ? baruTexthitam
|
|
// : secondaryColor,
|
|
// letterSpacing: 0.5,
|
|
// ),
|
|
// ),
|
|
// ),
|
|
// Padding(
|
|
// padding: EdgeInsets.only(
|
|
// right:
|
|
// getProportionateScreenWidth(
|
|
// 5)),
|
|
// child: Icon(Icons
|
|
// .keyboard_arrow_down_outlined),
|
|
// )
|
|
// ],
|
|
// ),
|
|
// decoration: BoxDecoration(
|
|
// color: isDarkMode
|
|
// ? Color(0xff212643)
|
|
// : Color(0xffF2F2F2),
|
|
// borderRadius:
|
|
// BorderRadius.circular(10),
|
|
// border: Border.all(
|
|
// color: isBirthDateEmpty ==
|
|
// null
|
|
// ? isDarkMode
|
|
// ? Color(0xff212643)
|
|
// : Color(0xffF2F2F2)
|
|
// : isBirthDateEmpty!
|
|
// ? Colors.red[700] ??
|
|
// Color(
|
|
// 0xffd32f2f)
|
|
// : isDarkMode
|
|
// ? Color(
|
|
// 0xff212643)
|
|
// : Color(
|
|
// 0xffF2F2F2),
|
|
// ),
|
|
// ),
|
|
// ),
|
|
// customTextValidator(
|
|
// isBirthDateEmpty,
|
|
// 'Tanggal lahir tidak boleh kosong'),
|
|
// ],
|
|
// ),
|
|
// ),
|
|
// onTap: () async {
|
|
// DateTime initialDate = state
|
|
// .isNewBirthDate
|
|
// ? DateTime(
|
|
// int.parse(newBirthDate
|
|
// .split('-')[0]),
|
|
// int.parse(newBirthDate
|
|
// .split('-')[1]),
|
|
// int.parse(newBirthDate
|
|
// .split('-')[2]))
|
|
// : result.datebirth == null
|
|
// ? DateTime.now()
|
|
// : DateTime(
|
|
// int.parse(result
|
|
// .datebirth!
|
|
// .split('-')[0]),
|
|
// int.parse(result
|
|
// .datebirth!
|
|
// .split('-')[1]),
|
|
// int.parse(
|
|
// result.datebirth!.split('-')[2]));
|
|
// final datePick = await showDatePicker(
|
|
// context: context,
|
|
// initialDate: initialDate,
|
|
// firstDate: DateTime(1900),
|
|
// lastDate: DateTime(2100),
|
|
// builder: (BuildContext context,
|
|
// Widget? child) {
|
|
// return Theme(
|
|
// data:
|
|
// Theme.of(context).copyWith(
|
|
// datePickerTheme:
|
|
// DatePickerThemeData(
|
|
// backgroundColor:
|
|
// Colors.white,
|
|
// headerBackgroundColor:
|
|
// primaryColor,
|
|
// headerForegroundColor:
|
|
// Colors.white,
|
|
// surfaceTintColor:
|
|
// Colors
|
|
// .transparent),
|
|
// colorScheme:
|
|
// ColorScheme.light(
|
|
// primary:
|
|
// primaryColor, // header background color
|
|
// onPrimary: Colors
|
|
// .white, // header text color
|
|
// onSurface:
|
|
// primaryColor, // body text color
|
|
// ),
|
|
// textButtonTheme:
|
|
// TextButtonThemeData(
|
|
// style: TextButton.styleFrom(
|
|
// foregroundColor:
|
|
// primaryColor, // button text color
|
|
// ),
|
|
// ),
|
|
// ),
|
|
// child: child!,
|
|
// );
|
|
// },
|
|
// );
|
|
// if (datePick != null &&
|
|
// datePick != birthDate) {
|
|
// birthDate = datePick;
|
|
// state.isNewBirthDate = true;
|
|
// setState(() {
|
|
// isBirthDateEmpty = false;
|
|
// });
|
|
|
|
// newBirthDate =
|
|
// "${birthDate.year}-${birthDate.month}-${birthDate.day}";
|
|
// }
|
|
// }),
|
|
// CustomProfileTextField(
|
|
// keyboardType: TextInputType.number,
|
|
// pad: getProportionateScreenWidth(2),
|
|
// text: state.newEmail
|
|
// ? newEmail
|
|
// : result.email ?? '',
|
|
// hinttext: 'Tuliskan email Anda',
|
|
// title: 'Email',
|
|
// validate: validateEmail,
|
|
// onChanged: (value) {
|
|
// state.newEmail = true;
|
|
// newEmail = value;
|
|
// },
|
|
// isErrorManual: isNameEmpty ?? false,
|
|
// textErrorManual:
|
|
// "Mohon masukkan email yang valid",
|
|
// ),
|
|
CustomProfileTextField(
|
|
keyboardType: TextInputType.number,
|
|
pad: getProportionateScreenWidth(2),
|
|
text: state.newPhone
|
|
? newPhone
|
|
: result.phone ?? '',
|
|
hinttext:
|
|
'Tuliskan nomor telepon Anda yang terdaftar',
|
|
title: 'Nomor Telepon / WA',
|
|
validate: validatePhone,
|
|
onChanged: (value) {
|
|
state.newPhone = true;
|
|
newPhone = value;
|
|
},
|
|
isErrorManual: isNameEmpty ?? false,
|
|
textErrorManual:
|
|
"Mohon masukkan nomor telepon yang valid",
|
|
),
|
|
// SizedBox(
|
|
// height: getProportionateScreenHeight(20),
|
|
// ),
|
|
// CustomProfileTextField(
|
|
// prefix: Padding(
|
|
// padding: EdgeInsets.only(
|
|
// top: getProportionateScreenHeight(10),
|
|
// left: getProportionateScreenWidth(20),
|
|
// right:
|
|
// getProportionateScreenHeight(10),
|
|
// ),
|
|
// child: FaIcon(
|
|
// FontAwesomeIcons.instagram,
|
|
// color: tenthColor),
|
|
// ),
|
|
// pad: getProportionateScreenWidth(2),
|
|
// text: state.newInstagram
|
|
// ? newInstagram
|
|
// : result.socialLink?.instagram ?? '',
|
|
// hinttext: 'http://instagram.com/',
|
|
// noTitle: true,
|
|
// onChanged: (value) {
|
|
// state.newInstagram = true;
|
|
// newInstagram = value;
|
|
// },
|
|
// ),
|
|
// CustomProfileTextField(
|
|
// prefix: Padding(
|
|
// padding: EdgeInsets.only(
|
|
// top: getProportionateScreenHeight(10),
|
|
// left: getProportionateScreenWidth(20),
|
|
// right:
|
|
// getProportionateScreenHeight(10),
|
|
// ),
|
|
// child: FaIcon(FontAwesomeIcons.twitter,
|
|
// color: tenthColor),
|
|
// ),
|
|
// pad: getProportionateScreenWidth(2),
|
|
// text: state.newTwitter
|
|
// ? newTwitter
|
|
// : result.socialLink?.twitter ?? '',
|
|
// hinttext: 'http://twitter.com/',
|
|
// noTitle: true,
|
|
// onChanged: (value) {
|
|
// state.newTwitter = true;
|
|
// newTwitter = value;
|
|
// },
|
|
// ),
|
|
// CustomProfileTextField(
|
|
// prefix: Padding(
|
|
// padding: EdgeInsets.only(
|
|
// top: getProportionateScreenHeight(10),
|
|
// left: getProportionateScreenWidth(20),
|
|
// right:
|
|
// getProportionateScreenHeight(10),
|
|
// ),
|
|
// child: FaIcon(
|
|
// FontAwesomeIcons.facebookF,
|
|
// color: tenthColor),
|
|
// ),
|
|
// pad: getProportionateScreenWidth(2),
|
|
// text: state.newFacebook
|
|
// ? newFacebook
|
|
// : result.socialLink?.facebook ?? '',
|
|
// hinttext: 'http://facebook.com/',
|
|
// noTitle: true,
|
|
// onChanged: (value) {
|
|
// state.newFacebook = true;
|
|
// newFacebook = value;
|
|
// },
|
|
// ),
|
|
// CustomProfileTextField(
|
|
// prefix: Padding(
|
|
// padding: EdgeInsets.only(
|
|
// top: getProportionateScreenHeight(10),
|
|
// left: getProportionateScreenWidth(20),
|
|
// right:
|
|
// getProportionateScreenHeight(10),
|
|
// ),
|
|
// child: FaIcon(
|
|
// FontAwesomeIcons.linkedinIn,
|
|
// color: tenthColor),
|
|
// ),
|
|
// pad: getProportionateScreenWidth(2),
|
|
// text: state.newLinkedin
|
|
// ? newLinkedin
|
|
// : result.socialLink?.linkedin ?? '',
|
|
// hinttext: 'http://linkedin.com/',
|
|
// noTitle: true,
|
|
// onChanged: (value) {
|
|
// state.newLinkedin = true;
|
|
// newLinkedin = value;
|
|
// },
|
|
// ),
|
|
],
|
|
)),
|
|
],
|
|
),
|
|
),
|
|
)
|
|
],
|
|
),
|
|
);
|
|
} else if (state.state == ResultStateData.NoData) {
|
|
return Center(child: Text(state.message));
|
|
} else if (state.state == ResultStateData.Error) {
|
|
return Center(
|
|
child: TextButton(
|
|
child: Column(
|
|
crossAxisAlignment: CrossAxisAlignment.center,
|
|
children: [
|
|
Text('Server internal Error ${state.message}'),
|
|
Icon(Icons.refresh)
|
|
],
|
|
),
|
|
onPressed: () {}),
|
|
);
|
|
} else {
|
|
return Center(child: Text(''));
|
|
}
|
|
},
|
|
),
|
|
),
|
|
);
|
|
}
|
|
}
|