import 'package:comwell_key_app/choose_share_room/components/my_room_widget.dart';
import 'package:comwell_key_app/choose_share_room/cubit/choose_share_room_cubit.dart';
import 'package:comwell_key_app/choose_share_room/cubit/choose_share_room_state.dart';
import 'package:comwell_key_app/common/components/comwell_app_bar.dart';
import 'package:comwell_key_app/common/components/comwell_error_widget.dart';
import 'package:comwell_key_app/overview/models/booking.dart';
import 'package:comwell_key_app/utils/l10n_utils.dart';
import 'package:flutter/material.dart';
import 'package:comwell_key_app/choose_share_room/components/choose_room_widget.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:comwell_key_app/common/components/shimmer_loader/choose_share_room_shimmer_loader.dart';
class ChooseShareRoomPage extends StatelessWidget {
final Booking booking;
const ChooseShareRoomPage({super.key, required this.booking});
@override
Widget build(BuildContext context) {
final theme = Theme.of(context);
final cubit = context.read<ChooseShareRoomCubit>();
return Scaffold(
backgroundColor: Theme.of(context).colorScheme.surface,
appBar: const ComwellAppBar(),
body: BlocBuilder<ChooseShareRoomCubit, ChooseShareRoomState>(
builder: (context, state) {
if (state.isLoading) {
return const ChooseShareRoomShimmerLoader();
}
if (state.errorMessage.isNotEmpty) {
return Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
ComwellErrorWidget(
title: context.strings.choose_room_error_title,
subtitle: context.strings.choose_room_error_subtitle,
),
],
),
);
}
return Padding(
padding: const EdgeInsets.symmetric(horizontal: 16),
child: ListView(
children: [
const SizedBox(height: 24),
Text(
context.strings.choose_room,
style: theme.textTheme.headlineLarge,
),
const SizedBox(height: 8),
Text(
context.strings.choose_room_subtitle,
style: theme.textTheme.bodySmall,
),
const SizedBox(height: 24),
...state.rooms
.where((room) => room.assignedTo == null)
.map(
(room) => ChooseRoomWidget(
booking: booking,
roomName: room.name,
description: room.description,
guests: room.guests,
imageAsset: room.imageAssets.first,
),
),
const SizedBox(height: 32),
if (state.rooms.any((room) => room.assignedTo != null))
...state.rooms
.where((room) => room.assignedTo != null)
.map(
(room) => MyRoomWidget(
roomName: room.name,
description: room.description,
guests: room.guests,
imageAsset: room.imageAssets.first,
),
),
const SizedBox(height: 32),
],
),
);
},
),
);
}
}