import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:go_router/go_router.dart'; import 'package:rrispat_app/src/features/auth/domains/models/auth_model.dart'; import 'package:rrispat_app/src/shared/shared_views.dart'; import 'package:rrispat_app/src/shared/widgets/rr_header.dart'; import '../../controllers/auth_controller.dart'; class AddUserWidget extends ConsumerStatefulWidget { const AddUserWidget({super.key}); @override ConsumerState<ConsumerStatefulWidget> createState() => _AddUserPageState(); } class _AddUserPageState extends ConsumerState<AddUserWidget> { TextEditingController phoneNumberController = TextEditingController(); TextEditingController fullNameController = TextEditingController(); final _gKey = GlobalKey<FormState>(); String code = ""; AuthModel authModel = AuthModel( uid: "", fcmToken: "", phoneNumber: "", fullName: "", division: "", department: "", isActive: true, isDefaultPin: true, isSuperAdmin: false, devices: const [], deviceHistory: const [], apps: const [], createdAt: DateTime.now(), updatedAt: DateTime.now(), ); @override Widget build(BuildContext context) { return Scaffold( appBar: const RRHeader(), body: Padding( padding: const EdgeInsets.all(5.0), child: Form( key: _gKey, child: ListView( children: [ const SizedBox( height: 10, ), fullNameWidget(), const SizedBox( height: 10, ), phoneWidget(), FilledButton( onPressed: () { if (_gKey.currentState!.validate()) { createUser( context, authModel.copyWith( fullName: fullNameController.text, phoneNumber: code + phoneNumberController.text, ), ); } }, child: const Text("Submit"), ), ], ), ), ), ); } Widget fullNameWidget() { return TextFormField( controller: fullNameController, keyboardType: TextInputType.text, style: Theme.of(context).textTheme.titleMedium, textCapitalization: TextCapitalization.words, decoration: InputDecoration( hintText: "Enter Full Name", label: const Text("Full Name"), border: OutlineInputBorder( borderRadius: BorderRadius.circular(10), ), ), validator: (value) { if (value == null || value.isEmpty) { return "Enter Full Name"; } return null; }, ); } Widget phoneWidget() { return TextFormField( controller: phoneNumberController, keyboardType: TextInputType.phone, maxLength: 10, style: Theme.of(context).textTheme.titleMedium, decoration: InputDecoration( prefix: const Text("+91"), hintText: "Enter Phone Number", label: const Text("Phone Number"), border: OutlineInputBorder( borderRadius: BorderRadius.circular(10), ), ), validator: (value) { if (value == null || value.isEmpty) { return "Enter a valid PhoneNumber"; } else if (value.length < 10) { return "Phone Number length must be 10"; } return null; }, ); } Future<void> createUser(BuildContext context, AuthModel auth) async { return showDialog( context: context, builder: (context) { return AlertDialog( title: Text("Confirm User", style: Theme.of(context).textTheme.titleLarge), content: SizedBox( height: 100, child: Column( children: [ const SizedBox( height: 10, ), Table( children: [ TableRow(children: [ TableCell( child: Text("Full Name", style: Theme.of(context).textTheme.labelLarge)), TableCell( child: Text(auth.fullName, style: Theme.of(context).textTheme.bodyMedium)), ]), TableRow(children: [ TableCell( child: Text("Phone Number", style: Theme.of(context).textTheme.labelLarge)), TableCell( child: Text(auth.phoneNumber, style: Theme.of(context).textTheme.bodyMedium)), ]), ], ), const SizedBox( height: 30, ), ], ), ), actions: [ OutlinedButton( onPressed: () { context.pop(true); }, child: Text("Cancel", style: Theme.of(context).textTheme.titleMedium)), ElevatedButton( onPressed: () { ref.read(authControllerProvider).createUser(ref, auth); context.goNamed(HomeView.routeName); }, child: Text("Confirm", style: Theme.of(context).textTheme.titleMedium)) ], ); }, ); } }