import 'package:comwell_key_app/common/components/comwell_app_bar.dart';
import 'package:comwell_key_app/common/components/comwell_text_field.dart';
import 'package:comwell_key_app/find_booking/cubit/find_booking_cubit.dart';
import 'package:comwell_key_app/find_booking/cubit/find_booking_state.dart';
import 'package:comwell_key_app/routing/app_routes.dart';
import 'package:comwell_key_app/themes/light_theme.dart';
import 'package:comwell_key_app/utils/l10n_utils.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:go_router/go_router.dart';
class FindBookingPage extends StatefulWidget {
const FindBookingPage({super.key});
@override
FindBookingPageState createState() => FindBookingPageState();
}
class FindBookingPageState extends State<FindBookingPage>
with SingleTickerProviderStateMixin {
late TabController _tabController;
@override
void initState() {
super.initState();
_tabController = TabController(length: 4, vsync: this);
}
@override
void dispose() {
_tabController.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
final theme = Theme.of(context);
return BlocBuilder<FindBookingCubit, FindBookingState>(
builder: (context, state) {
final cubit = context.read<FindBookingCubit>();
return Scaffold(
appBar: const ComwellAppBar(),
backgroundColor: Theme.of(context).colorScheme.surface,
body: Padding(
padding: const EdgeInsets.all(16.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
const Text(
'Find Booking',
style: TextStyle(fontSize: 24, fontWeight: FontWeight.w600),
),
const SizedBox(height: 20),
const SizedBox(height: 20),
ComwellTextField(
fieldName: context.strings.booking_reference,
initialValue: '',
readOnly: false,
controller: cubit.confirmationIdController,
textInputType: const TextInputType.numberWithOptions(signed: true),
),
const SizedBox(height: 20),
ComwellTextField(
fieldName: context.strings.your_last_name,
initialValue: '',
readOnly: false,
controller: cubit.lastNameController,
),
const Spacer(),
const SizedBox(height: 20),
],
),
),
bottomNavigationBar: Column(
mainAxisSize: MainAxisSize.min,
children: [
const Divider(color: colorDivider),
Padding(
padding: const EdgeInsets.only(
left: 16, right: 16, top: 16, bottom: 32),
child: ElevatedButton(
style: ElevatedButton.styleFrom(
minimumSize: const Size(double.infinity, 50),
backgroundColor: sandColor,
disabledBackgroundColor: disabledButtonColor,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(25),
),
),
onPressed: cubit.canContinue
? () async {
await cubit.findBooking(
cubit.confirmationIdController.text,
cubit.lastNameController.text);
if (context.mounted) {
context.push(AppRoutes.loadingPage);
}
}
: null,
child: Text(
'Find Booking',
style: theme.textTheme.headlineSmall?.copyWith(
color: Colors.white,
),
),
),
),
],
),
);
});
}
}