300 lines
14 KiB
Dart
300 lines
14 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
|
import 'package:mobile_pos/Screens/Profile%20Screen/edit_profile.dart';
|
|
import 'package:mobile_pos/currency.dart';
|
|
import 'package:mobile_pos/generated/l10n.dart' as lang;
|
|
import 'package:nb_utils/nb_utils.dart';
|
|
|
|
import '../../Const/api_config.dart';
|
|
import '../../GlobalComponents/glonal_popup.dart';
|
|
import '../../Provider/profile_provider.dart';
|
|
import '../../constant.dart';
|
|
import '../Authentication/change password/change_password_screen.dart';
|
|
|
|
class ProfileDetails extends StatefulWidget {
|
|
const ProfileDetails({super.key});
|
|
|
|
@override
|
|
ProfileDetailsState createState() => ProfileDetailsState();
|
|
}
|
|
|
|
class ProfileDetailsState extends State<ProfileDetails> {
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
final theme = Theme.of(context);
|
|
return Consumer(builder: (context, ref, __) {
|
|
final businessInfo = ref.watch(businessInfoProvider);
|
|
return businessInfo.when(data: (details) {
|
|
TextEditingController addressController = TextEditingController(text: details.data?.address);
|
|
TextEditingController openingBalanceController = TextEditingController(text: details.data?.shopOpeningBalance.toString());
|
|
TextEditingController remainingBalanceController = TextEditingController(text: details.data?.remainingShopBalance.toString());
|
|
TextEditingController phoneController = TextEditingController(text: details.data?.phoneNumber);
|
|
TextEditingController nameController = TextEditingController(text: details.data?.companyName);
|
|
TextEditingController categoryController = TextEditingController(text: details.data?.category?.name);
|
|
TextEditingController vatGstTitleController = TextEditingController(text: details.data?.vatName);
|
|
TextEditingController vatGstNumberController = TextEditingController(text: details.data?.vatNo);
|
|
return GlobalPopup(
|
|
child: Scaffold(
|
|
backgroundColor: kWhite,
|
|
appBar: AppBar(
|
|
title: Text(
|
|
lang.S.of(context).profile,
|
|
),
|
|
actions: [
|
|
Visibility(
|
|
// visible: details.data?.user?.visibility?.profileEditPermission ?? true,
|
|
child: Padding(
|
|
padding: const EdgeInsets.only(right: 15.0),
|
|
child: GestureDetector(
|
|
onTap: () async {
|
|
await Navigator.push(
|
|
context,
|
|
MaterialPageRoute(
|
|
builder: (context) => EditProfile(
|
|
profile: details,
|
|
ref: ref,
|
|
),
|
|
));
|
|
setState(() {});
|
|
},
|
|
child: Row(
|
|
children: [
|
|
const Icon(
|
|
Icons.edit,
|
|
color: kMainColor,
|
|
),
|
|
const SizedBox(
|
|
width: 5.0,
|
|
),
|
|
Text(
|
|
lang.S.of(context).edit,
|
|
style: theme.textTheme.bodyMedium?.copyWith(
|
|
color: kMainColor,
|
|
),
|
|
),
|
|
],
|
|
),
|
|
),
|
|
),
|
|
),
|
|
],
|
|
iconTheme: const IconThemeData(color: Colors.black),
|
|
centerTitle: true,
|
|
backgroundColor: Colors.white,
|
|
elevation: 0.0,
|
|
),
|
|
bottomNavigationBar: Padding(
|
|
padding: const EdgeInsets.all(10.0),
|
|
child: ElevatedButton.icon(
|
|
label: Text(lang.S.of(context).changePassword),
|
|
onPressed: () {
|
|
Navigator.push(
|
|
context,
|
|
MaterialPageRoute(
|
|
builder: (context) => ChangePasswordScreen(),
|
|
));
|
|
},
|
|
),
|
|
),
|
|
body: Padding(
|
|
padding: const EdgeInsets.all(10.0),
|
|
child: SingleChildScrollView(
|
|
child: Column(
|
|
children: [
|
|
Center(
|
|
child: Container(
|
|
height: 100.0,
|
|
width: 100.0,
|
|
decoration: details.data?.pictureUrl == null
|
|
? BoxDecoration(
|
|
image: const DecorationImage(image: AssetImage('images/no_shop_image.png'), fit: BoxFit.cover),
|
|
borderRadius: BorderRadius.circular(50),
|
|
)
|
|
: BoxDecoration(
|
|
image: DecorationImage(image: NetworkImage(APIConfig.domain + (details.data?.pictureUrl.toString() ?? '')), fit: BoxFit.cover),
|
|
borderRadius: BorderRadius.circular(50),
|
|
),
|
|
),
|
|
),
|
|
const SizedBox(height: 10.0),
|
|
|
|
///________Name___________________________________
|
|
Padding(
|
|
padding: const EdgeInsets.all(10.0),
|
|
child: AppTextField(
|
|
readOnly: true,
|
|
cursorColor: kGreyTextColor,
|
|
controller: nameController,
|
|
decoration: kInputDecoration.copyWith(
|
|
labelText: lang.S.of(context).name,
|
|
border: const OutlineInputBorder().copyWith(borderSide: const BorderSide(color: kGreyTextColor)),
|
|
hoverColor: kGreyTextColor,
|
|
fillColor: kGreyTextColor,
|
|
),
|
|
textFieldType: TextFieldType.NAME,
|
|
),
|
|
),
|
|
|
|
///________Email__________________________________
|
|
Padding(
|
|
padding: const EdgeInsets.all(10.0),
|
|
child: AppTextField(
|
|
readOnly: true,
|
|
initialValue: details.data?.user?.email,
|
|
cursorColor: kGreyTextColor,
|
|
decoration: kInputDecoration.copyWith(
|
|
//labelText: "Email",
|
|
labelText: lang.S.of(context).email,
|
|
border: const OutlineInputBorder().copyWith(borderSide: const BorderSide(color: kGreyTextColor)),
|
|
hoverColor: kGreyTextColor,
|
|
fillColor: kGreyTextColor,
|
|
),
|
|
textFieldType: TextFieldType.NAME,
|
|
),
|
|
),
|
|
|
|
///_____________Category__________________________________
|
|
Padding(
|
|
padding: const EdgeInsets.all(10.0),
|
|
child: AppTextField(
|
|
readOnly: true,
|
|
cursorColor: kGreyTextColor,
|
|
controller: categoryController,
|
|
decoration: kInputDecoration.copyWith(
|
|
labelText: lang.S.of(context).businessCat,
|
|
border: const OutlineInputBorder().copyWith(borderSide: const BorderSide(color: kGreyTextColor)),
|
|
hoverColor: kGreyTextColor,
|
|
fillColor: kGreyTextColor,
|
|
),
|
|
textFieldType: TextFieldType.NAME,
|
|
),
|
|
),
|
|
|
|
///_____________Phone_________________________________
|
|
Padding(
|
|
padding: const EdgeInsets.all(10.0),
|
|
child: AppTextField(
|
|
readOnly: true,
|
|
cursorColor: kGreyTextColor,
|
|
controller: phoneController,
|
|
decoration: kInputDecoration.copyWith(
|
|
labelText: lang.S.of(context).phone,
|
|
border: const OutlineInputBorder().copyWith(borderSide: const BorderSide(color: kGreyTextColor)),
|
|
hoverColor: kGreyTextColor,
|
|
fillColor: kGreyTextColor,
|
|
),
|
|
textFieldType: TextFieldType.NAME,
|
|
),
|
|
),
|
|
|
|
///__________Address_________________________
|
|
Padding(
|
|
padding: const EdgeInsets.all(10.0),
|
|
child: AppTextField(
|
|
readOnly: true,
|
|
cursorColor: kGreyTextColor,
|
|
controller: addressController,
|
|
decoration: kInputDecoration.copyWith(
|
|
labelText: lang.S.of(context).address,
|
|
border: const OutlineInputBorder().copyWith(borderSide: const BorderSide(color: kGreyTextColor)),
|
|
hoverColor: kGreyTextColor,
|
|
fillColor: kGreyTextColor,
|
|
),
|
|
textFieldType: TextFieldType.NAME,
|
|
),
|
|
),
|
|
|
|
///_______Gst_number____________________________
|
|
Row(
|
|
children: [
|
|
///_______title__________________________________
|
|
Expanded(
|
|
child: Padding(
|
|
padding: const EdgeInsets.only(top: 10, left: 10, bottom: 10),
|
|
child: AppTextField(
|
|
readOnly: true,
|
|
validator: (value) {
|
|
return null;
|
|
},
|
|
controller: vatGstTitleController,
|
|
textFieldType: TextFieldType.NAME,
|
|
decoration: kInputDecoration.copyWith(
|
|
labelText: lang.S.of(context).vatGstTitle,
|
|
border: const OutlineInputBorder(),
|
|
),
|
|
),
|
|
),
|
|
),
|
|
|
|
///______Vat_and_Gst_Number__________________________________
|
|
Expanded(
|
|
child: Padding(
|
|
padding: const EdgeInsets.all(10.0),
|
|
child: AppTextField(
|
|
readOnly: true,
|
|
validator: (value) {
|
|
return null;
|
|
},
|
|
controller: vatGstNumberController,
|
|
// Optional
|
|
textFieldType: TextFieldType.NAME,
|
|
decoration: kInputDecoration.copyWith(
|
|
labelText: lang.S.of(context).vatGstNumber,
|
|
border: const OutlineInputBorder(),
|
|
),
|
|
),
|
|
),
|
|
),
|
|
],
|
|
),
|
|
|
|
///__________Opening_Balance________________________
|
|
Padding(
|
|
padding: const EdgeInsets.all(10.0),
|
|
child: AppTextField(
|
|
readOnly: true,
|
|
cursorColor: kGreyTextColor,
|
|
controller: openingBalanceController,
|
|
decoration: kInputDecoration.copyWith(
|
|
prefixText: '$currency ',
|
|
labelText: lang.S.of(context).shopOpeningBalance,
|
|
border: const OutlineInputBorder().copyWith(borderSide: const BorderSide(color: kGreyTextColor)),
|
|
hoverColor: kGreyTextColor,
|
|
fillColor: kGreyTextColor,
|
|
),
|
|
textFieldType: TextFieldType.NAME,
|
|
),
|
|
),
|
|
|
|
// ///__________Remaining_Balance________________________
|
|
// Padding(
|
|
// padding: const EdgeInsets.all(10.0),
|
|
// child: AppTextField(
|
|
// readOnly: true,
|
|
// cursorColor: kGreyTextColor,
|
|
// controller: remainingBalanceController,
|
|
// decoration: kInputDecoration.copyWith(
|
|
// prefixText: '$currency ',
|
|
// labelText: lang.S.of(context).shopRemainingBalance,
|
|
// border: const OutlineInputBorder().copyWith(borderSide: const BorderSide(color: kGreyTextColor)),
|
|
// hoverColor: kGreyTextColor,
|
|
// fillColor: kGreyTextColor,
|
|
// ),
|
|
// textFieldType: TextFieldType.NAME,
|
|
// ),
|
|
// ),
|
|
],
|
|
),
|
|
),
|
|
),
|
|
),
|
|
);
|
|
}, error: (e, stack) {
|
|
return Text(e.toString());
|
|
}, loading: () {
|
|
return const CircularProgressIndicator();
|
|
});
|
|
});
|
|
}
|
|
}
|