You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
car_common_app/lib/views/user/register_provider_page.dart

430 lines
17 KiB
Dart

import 'package:mc_common_app/config/dependencies.dart';
import 'package:mc_common_app/extensions/int_extensions.dart';
import 'package:mc_common_app/extensions/string_extensions.dart';
import 'package:mc_common_app/generated/locale_keys.g.dart';
import 'package:mc_common_app/models/user_models/country.dart';
import 'package:mc_common_app/models/user_models/role.dart';
import 'package:mc_common_app/repositories/user_repo.dart';
import 'package:mc_common_app/utils/utils.dart';
import 'package:mc_common_app/view_models/user_view_model.dart';
import 'package:mc_common_app/widgets/common_widgets/app_bar.dart';
import 'package:mc_common_app/widgets/dropdown/dropdow_field.dart';
import 'package:mc_common_app/widgets/button/show_fill_button.dart';
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
import 'package:mc_common_app/widgets/tab/role_type_tab.dart';
import 'package:provider/provider.dart';
import '../../theme/colors.dart';
class RegisterProviderPage extends StatefulWidget {
const RegisterProviderPage({Key? key}) : super(key: key);
@override
State<RegisterProviderPage> createState() => _RegisterPageState();
}
class _RegisterPageState extends State<RegisterProviderPage> {
String phoneNum = "", countryCode = "";
int role = -1, countryId = -1;
DropValue? selectedDrop;
TextEditingController emailController = TextEditingController();
Future<Role>? futureRoles;
Future<Country>? futureCountries;
UserVM? userVM;
@override
void initState() {
super.initState();
userVM = context.read<UserVM>();
fetchData();
}
fetchData() {
UserRepo userRepo = injector.get<UserRepo>();
userRepo.getRoles().then((value) {
setState(() {
futureRoles = Future.value(value);
});
});
userRepo.getAllCountries().then((value) {
setState(() {
futureCountries = Future.value(value);
});
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: const CustomAppBar(isRemoveBackButton: false, title: ""),
body: Container(
width: double.infinity,
height: double.infinity,
padding: const EdgeInsets.all(20),
child: SingleChildScrollView(
child: SizedBox(
height: MediaQuery.of(context).size.height,
child: Column(
children: [
12.height,
LocaleKeys.signUp.tr().toText(
fontSize: 20,
letterSpacing: -1.44,
),
LocaleKeys.enterPhoneNumber.tr().toText(
color: MyColors.lightTextColor,
textAlign: TextAlign.center,
fontSize: 14,
height: 23 / 24,
letterSpacing: -0.48,
),
30.height,
FutureBuilder<Role>(
future: futureRoles,
builder: (context, snapshot) {
if (snapshot.hasData) {
List<DropValue> dropList = [];
snapshot.data?.data?.forEach((element) {
dropList.add(DropValue(element.id ?? 0, EasyLocalization.of(context)?.currentLocale?.countryCode == "SA" ? element.roleNameN ?? "" : element.roleName ?? "", ""));
});
if (role == -1) {
role = snapshot.data?.data?.first.id ?? -1;
}
return RoleTypeTab(
0,
dropList,
onSelect: (DropValue value) {
role = value.id;
},
);
} else {
return const CircularProgressIndicator();
}
},
),
18.height,
FutureBuilder<Country>(
future: futureCountries,
builder: (context, snapshot) {
if (snapshot.hasData) {
List<DropValue> dropList = [];
snapshot.data?.data?.forEach((element) {
dropList.add(DropValue(
element.id ?? 0,
EasyLocalization.of(context)?.currentLocale?.countryCode == "SA"
? (element.countryNameN ?? "") + " " + (element.countryCode ?? "")
: (element.countryName ?? "") + " " + (element.countryCode ?? ""),
element.countryCode ?? ""));
});
return Column(
children: [
LocaleKeys.selectYourCountry.tr().toText(
fontSize: 14,
color: MyColors.lightTextColor,
textAlign: TextAlign.center,
),
10.height,
DropdownField(
(DropValue value) {
selectedDrop = value;
setState(() {
countryCode = value.subValue;
countryId = value.id;
});
},
dropdownValue: selectedDrop,
list: dropList,
hint: LocaleKeys.chooseCountry .tr(),
),
],
);
} else {
return CircularProgressIndicator();
}
},
),
18.height,
LocaleKeys.enterPhoneForVerfication.tr().toText(
fontSize: 14,
color: MyColors.lightTextColor,
textAlign: TextAlign.center,
),
10.height,
Row(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Utils.mExp(1),
Expanded(
flex: 3,
child: Row(
children: [
Text(
(countryCode.isEmpty ? "+00" : "+" + countryCode),
style: const TextStyle(
fontSize: 20,
color: MyColors.black,
fontWeight: FontWeight.bold,
),
),
const Text(
" | ",
style: TextStyle(
fontSize: 20,
color: MyColors.black,
fontWeight: FontWeight.bold,
),
),
Flexible(
child: TextField(
controller: emailController,
onChanged: (v) {
phoneNum = v;
},
style: const TextStyle(
fontSize: 20,
color: MyColors.black,
),
decoration: const InputDecoration(
hintStyle: TextStyle(color: MyColors.lightTextColor, fontSize: 20),
hintText: "546758594",
contentPadding: EdgeInsets.zero,
border: InputBorder.none,
),
),
),
],
),
),
Utils.mExp(1),
],
),
40.height,
ShowFillButton(
title: LocaleKeys.continu.tr(),
maxWidth: double.infinity,
onPressed: () {
if (validation()) userVM!.performBasicOtpRegisterPage(context, countryCode: countryCode, phoneNum: phoneNum, role: role);
// if (validation()) performBasicOtp(context);
},
),
],
),
),
),
),
);
}
// Future<void> performBasicOtp(BuildContext context) async {
//
// Utils.showLoading(context);
// BasicOtp basicOtp = await UserApiClent().basicOtp(countryCode + phoneNum, roleId: role);
// Utils.hideLoading(context);
// if (basicOtp.messageStatus == 1) {
// showMDialog(context, child: OtpDialog(
// onClick: (String code) async {
// pop(context);
// Utils.showLoading(context);
// RegisterUser user = await UserApiClent().basicVerify(countryCode + phoneNum, code, basicOtp.data!.userToken ?? "");
// Utils.hideLoading(context);
// if (user.messageStatus == 1) {
// Utils.showToast(user.message ?? "");
// navigateReplaceWithName(context, AppRoutes.completeProfile, arguments: user);
// } else {
// Utils.showToast(user.message ?? "");
// }
// },
// ));
// } else {
// Utils.showToast(basicOtp.message ?? "");
// }
// }
bool validation() {
bool isValid = true;
if (role == -1) {
Utils.showToast("Please select Provider Role");
isValid = false;
} else if (countryCode.isEmpty) {
Utils.showToast("Please select Country Code");
isValid = false;
} else if (phoneNum.isEmpty) {
Utils.showToast("Please add Phone No");
isValid = false;
}
return isValid;
}
}
// class _RegisterPageState extends State<RegisterPage> {
// String phoneNum = "", countryCode = "";
//
// int role = 4, countryId = -1;
//
// TextEditingController emailController = TextEditingController();
//
// @override
// Widget build(BuildContext context) {
// final UserVM userVM = context.read<UserVM>();
// return Scaffold(
// appBar:CustomAppBar(
// isRemoveBackButton: false, title: ""),
// body: Container(
// width: double.infinity,
// height: double.infinity,
// padding: const EdgeInsets.all(20),
// child: SingleChildScrollView(
// child: SizedBox(
// height: MediaQuery.of(context).size.height,
// child: Column(
// children: [
// 12.height,
// LocaleKeys.signUp.tr().toText(fontSize: 20, letterSpacing: -1.44,),
// 20.height,
// LocaleKeys.enterPhoneNumber.tr().toText(
// color: MyColors.lightTextColor,
// textAlign: TextAlign.center,
// fontSize: 14,
// height: 23 / 24,
// letterSpacing: -0.48,
// ),
// 30.height,
// FutureBuilder<Country>(
// future: userVM.getAllCountries(),
// builder: (context, snapshot) {
// if (snapshot.hasData) {
// List<DropValue> dropList = [];
// snapshot.data?.data?.forEach((element) {
// dropList.add(DropValue(
// element.id ?? 0,
// EasyLocalization.of(context)?.currentLocale?.countryCode == "SA"
// ? (element.countryNameN ?? "") + " " + (element.countryCode ?? "")
// : (element.countryName ?? "") + " " + (element.countryCode ?? ""),
// element.countryCode ?? ""));
// });
// return Column(
// children: [
// LocaleKeys.selectYourCountry.tr().toText(
// color: MyColors.lightTextColor,
// textAlign: TextAlign.center,
// fontSize: 14,
// height: 23 / 24,
// letterSpacing: -0.48,
// ),
// 10.height,
// DropdownField(
// (DropValue value) {
// setState(() {
// countryCode = value.subValue;
// countryId = value.id;
// });
// },
// list: dropList,
// hint: LocaleKeys.chooseCountry.tr(),
// ),
// ],
// );
// } else {
// return const CircularProgressIndicator();
// }
// },
// ),
// 18.height,
// LocaleKeys.enterPhoneForVerfication.tr().toText(
// color: MyColors.lightTextColor,
// textAlign: TextAlign.center,
// fontSize: 14,
// height: 23 / 24,
// letterSpacing: -0.48,
// ),
// 10.height,
// Row(
// mainAxisAlignment: MainAxisAlignment.center,
// crossAxisAlignment: CrossAxisAlignment.center,
// children: [
// Utils.mExp(1),
// Expanded(
// flex: 3,
// child: Row(
// children: [
// Text(
// (countryCode.isEmpty ? "+00" : "+" + countryCode),
// style: const TextStyle(
// fontSize: 20,
// color: MyColors.black,
// fontWeight: FontWeight.bold,
// ),
// ),
// const Text(
// " | ",
// style: TextStyle(
// fontSize: 20,
// color: MyColors.black,
// fontWeight: FontWeight.bold,
// ),
// ),
// Flexible(
// child: TextField(
// controller: emailController,
// onChanged: (v) {
// phoneNum = v;
// },
// style: const TextStyle(
// fontSize: 20,
// color: MyColors.black,
// ),
// decoration: const InputDecoration(
// hintStyle: TextStyle(color: MyColors.lightTextColor, fontSize: 20),
// hintText: "546758594",
// contentPadding: EdgeInsets.zero,
// border: InputBorder.none,
// ),
// ),
// ),
// ],
// ),
// ),
// Utils.mExp(1),
// ],
// ),
// 40.height,
// ShowFillButton(
// title: LocaleKeys.continu.tr(),
// maxWidth: double.infinity,
// onPressed: () {
// if (validation()) userVM.performBasicOtpRegisterPage(context, countryCode: countryCode, phoneNum: phoneNum, role: role);
// },
// ),
// ],
// ),
// ),
// ),
// ),
// );
// }
//
// bool validation() {
// bool isValid = true;
// if (role == -1) {
// Utils.showToast(LocaleKeys.selectProviderRole.tr());
// //("Please select Provider Role");
// isValid = false;
// } else if (countryCode.isEmpty) {
// Utils.showToast(LocaleKeys.selectCountryCode.tr());
// //("Please select Country Code");
// isValid = false;
// } else if (phoneNum.isEmpty) {
// Utils.showToast(LocaleKeys.addPhoneNo.tr());
// //("Please add Phone No");
// isValid = false;
// }
// return isValid;
// }
// }