import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter/material.dart'; import 'package:enaklo_pos/core/components/components.dart'; import 'package:enaklo_pos/core/constants/colors.dart'; import 'package:enaklo_pos/presentation/table/blocs/get_table/get_table_bloc.dart'; import 'package:enaklo_pos/presentation/table/dialogs/form_table_dialog.dart'; import 'package:enaklo_pos/presentation/table/widgets/card_table_widget.dart'; class TablePage extends StatefulWidget { const TablePage({super.key}); @override State createState() => _TablePageState(); } class _TablePageState extends State { @override void initState() { context.read().add(const GetTableEvent.getTables()); super.initState(); } @override Widget build(BuildContext context) { return Padding( padding: const EdgeInsets.all(24), child: ListView( children: [ Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Text( "Table Management", style: TextStyle( fontSize: 24.0, fontWeight: FontWeight.bold, color: AppColors.primary, ), ), Button.filled( onPressed: () { showDialog( context: context, builder: (context) => FormTableDialog(), ); }, label: 'Generate Table', height: 48.0, width: 200.0, ), ], ), SpaceHeight(24.0), BlocBuilder( builder: (context, state) { return state.maybeWhen( orElse: () { return SizedBox.shrink(); }, loading: () { return const CircularProgressIndicator(); }, success: (tables) { if (tables.isEmpty) { return const Center( child: Text('No table available'), ); } return GridView.builder( padding: EdgeInsets.zero, gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount( childAspectRatio: 1.0, crossAxisCount: 4, mainAxisSpacing: 16, crossAxisSpacing: 16, ), itemCount: tables.length, shrinkWrap: true, physics: const ScrollPhysics(), itemBuilder: (BuildContext context, int index) { return CardTableWidget( table: tables[index], ); }, ); }, ); }, ), ], ), ); } }