import 'dart:convert'; import 'package:flutter/material.dart'; import 'package:patient_manager/components/myErrorMessage.dart'; import 'package:patient_manager/components/mySuccessMessage.dart'; import 'package:patient_manager/components/myTextInput.dart'; import 'package:patient_manager/components/mybutton.dart'; import 'package:patient_manager/env/env.dart'; import 'package:patient_manager/main.dart'; import 'package:patient_manager/objects/appUser.dart'; import 'package:supertokens_flutter/http.dart' as http; class ProfileUserUpdate extends StatefulWidget { final AppUser signedInUser; //final String userEmail; const ProfileUserUpdate({ super.key, required this.signedInUser, }); @override State createState() => _ProfileUserUpdateState(); } class _ProfileUserUpdateState extends State { final usernameController = TextEditingController(); final fnameController = TextEditingController(); final lnameController = TextEditingController(); bool isFieldsFilled() { if (fnameController.text.isEmpty || lnameController.text.isEmpty || usernameController.text.isEmpty) { return false; } else { return true; } } Future updateUserApiCall() async { //print("Here1"); //userEmail = getLoginUserEmail() as String; //print(userEmail); //print("Here2"); //await getOfficeIdByUser(docOfficeIdApiUrl + userEmail); //print(futureDocOfficeId.toString()); //print("Here3"); var response = await http.put( Uri.parse("${AppEnviroment.baseApiUrl}/"), headers: { "Content-Type": "application/json; charset=UTF-8" }, body: jsonEncode({ "idusers": widget.signedInUser.idusers, "username": usernameController.text, "fnam": fnameController.text, "lname": lnameController.text, }), ); //print("Here4"); //print(response.statusCode); if (response.statusCode == 200) { Navigator.of(context) .pushNamed('/profile', arguments: widget.signedInUser); String message = "${widget.signedInUser.email}'s information has been updated successfully!"; successPopUp(message); } else { internetConnectionPopUp(); } } void internetConnectionPopUp() { showDialog( context: context, builder: (context) { return const MyErrorMessage(errorType: "Internet Connection"); }, ); } void successPopUp(String message) { showDialog( context: context, builder: (context) { return MySuccessMessage( successType: "Success", successMessage: message, ); }, ); } @override void initState() { fnameController.text = widget.signedInUser.fname; lnameController.text = widget.signedInUser.lname; usernameController.text = widget.signedInUser.username; super.initState(); } @override Widget build(BuildContext context) { return Column( children: [ const SizedBox(height: 15.0), const Text( "Update User profile:", style: TextStyle( fontWeight: FontWeight.bold, fontSize: 25, ), ), const SizedBox(height: 15.0), MyTextField( controller: usernameController, hintText: "Username", editable: true, required: true, ), const SizedBox(height: 10.0), MyTextField( controller: fnameController, hintText: "First Name", editable: true, required: true, ), const SizedBox(height: 10.0), MyTextField( controller: lnameController, hintText: "Last Name", editable: true, required: true, ), const SizedBox(height: 10.0), SizedBox( width: 500.0, height: 100.0, child: MyButton( buttonText: "Update", buttonColor: MzanziInnovationHub.of(context)!.theme.secondaryColor(), textColor: MzanziInnovationHub.of(context)!.theme.primaryColor(), onTap: () { if (isFieldsFilled()) { } else { showDialog( context: context, builder: (context) { return const MyErrorMessage(errorType: "Input Error"); }, ); } }, ), ), ], ); } }