diff --git a/lib/presentation/pages/main/pages/setting/sections/printer/setting_printer_kitchen.dart b/lib/presentation/pages/main/pages/setting/sections/printer/setting_printer_kitchen.dart new file mode 100644 index 0000000..071c92c --- /dev/null +++ b/lib/presentation/pages/main/pages/setting/sections/printer/setting_printer_kitchen.dart @@ -0,0 +1,103 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; + +import '../../../../../../../application/printer/printer_loader/printer_loader_bloc.dart'; +import '../../../../../../../common/theme/theme.dart'; +import '../../../../../../components/card/error_card.dart'; +import '../../../../../../components/loader/loader_with_text.dart'; +import '../../widgets/printer_card.dart'; +import 'setting_printer_form.dart'; + +class SettingPrinterKitchen extends StatefulWidget { + const SettingPrinterKitchen({super.key}); + + @override + State createState() => _SettingPrinterKitchenState(); +} + +class _SettingPrinterKitchenState extends State { + bool isEdit = false; + @override + initState() { + context.read().add( + const PrinterLoaderEvent.getByCode('kitchen'), + ); + super.initState(); + } + + @override + Widget build(BuildContext context) { + return Material( + color: AppColor.background, + child: SingleChildScrollView( + padding: const EdgeInsets.all(16.0), + child: Column( + children: [ + BlocBuilder( + builder: (context, state) { + if (state.isFetching) { + return const Center(child: LoaderWithText()); + } + + if (state.printer.code == '') { + return SettingPrinterForm( + code: 'kitchen', + onSuccess: () { + context.read().add( + PrinterLoaderEvent.getByCode('kitchen'), + ); + }, + ); + } + + return state.failureOption.fold( + () => isEdit + ? SettingPrinterForm( + code: 'kitchen', + printer: state.printer, + onCancel: () { + setState(() { + isEdit = false; + }); + }, + onSuccess: () { + context.read().add( + PrinterLoaderEvent.getByCode('kitchen'), + ); + setState(() { + isEdit = false; + }); + }, + ) + : PrinterCard( + printer: state.printer, + onEdit: () { + setState(() { + isEdit = true; + }); + }, + ), + (f) => f.maybeMap( + orElse: () => ErrorCard( + title: 'Error', + message: 'Terjadi Kesalahan', + onTap: () {}, + ), + empty: (value) => SettingPrinterForm( + code: 'kitchen', + onSuccess: () { + context.read().add( + PrinterLoaderEvent.getByCode('kitchen'), + ); + }, + ), + ), + ); + }, + ), + ], + ), + ), + ); + } +} diff --git a/lib/presentation/pages/main/pages/setting/sections/setting_printer_section.dart b/lib/presentation/pages/main/pages/setting/sections/setting_printer_section.dart index 597ad19..41fe8b2 100644 --- a/lib/presentation/pages/main/pages/setting/sections/setting_printer_section.dart +++ b/lib/presentation/pages/main/pages/setting/sections/setting_printer_section.dart @@ -3,6 +3,7 @@ import 'package:flutter/material.dart'; import '../../../../../components/page/page_title.dart'; import '../../../../../components/tab/custom_tabbar.dart'; import 'printer/setting_printer_checker.dart'; +import 'printer/setting_printer_kitchen.dart'; import 'printer/setting_printer_receipt.dart'; class SettingPrinterSection extends StatelessWidget { @@ -29,7 +30,7 @@ class SettingPrinterSection extends StatelessWidget { tabViews: [ SettingPrinterReceipt(), SettingPrinterChecker(), - Text('Kitchen Printer'), + SettingPrinterKitchen(), Text('Bar Printer'), Text('Tiket Printer'), ],