diff --git a/lib/presentation/pages/main/pages/setting/sections/printer/setting_printer_bar.dart b/lib/presentation/pages/main/pages/setting/sections/printer/setting_printer_bar.dart new file mode 100644 index 0000000..648e0f9 --- /dev/null +++ b/lib/presentation/pages/main/pages/setting/sections/printer/setting_printer_bar.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 SettingPrinterBar extends StatefulWidget { + const SettingPrinterBar({super.key}); + + @override + State createState() => _SettingPrinterBarState(); +} + +class _SettingPrinterBarState extends State { + bool isEdit = false; + @override + initState() { + context.read().add( + const PrinterLoaderEvent.getByCode('bar'), + ); + 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: 'bar', + onSuccess: () { + context.read().add( + PrinterLoaderEvent.getByCode('bar'), + ); + }, + ); + } + + return state.failureOption.fold( + () => isEdit + ? SettingPrinterForm( + code: 'bar', + printer: state.printer, + onCancel: () { + setState(() { + isEdit = false; + }); + }, + onSuccess: () { + context.read().add( + PrinterLoaderEvent.getByCode('bar'), + ); + 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: 'bar', + onSuccess: () { + context.read().add( + PrinterLoaderEvent.getByCode('bar'), + ); + }, + ), + ), + ); + }, + ), + ], + ), + ), + ); + } +} diff --git a/lib/presentation/pages/main/pages/setting/sections/printer/setting_printer_ticket.dart b/lib/presentation/pages/main/pages/setting/sections/printer/setting_printer_ticket.dart new file mode 100644 index 0000000..9c91bf1 --- /dev/null +++ b/lib/presentation/pages/main/pages/setting/sections/printer/setting_printer_ticket.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 SettingPrinterTicket extends StatefulWidget { + const SettingPrinterTicket({super.key}); + + @override + State createState() => _SettingPrinterTicketState(); +} + +class _SettingPrinterTicketState extends State { + bool isEdit = false; + @override + initState() { + context.read().add( + const PrinterLoaderEvent.getByCode('ticket'), + ); + 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: 'ticket', + onSuccess: () { + context.read().add( + PrinterLoaderEvent.getByCode('ticket'), + ); + }, + ); + } + + return state.failureOption.fold( + () => isEdit + ? SettingPrinterForm( + code: 'ticket', + printer: state.printer, + onCancel: () { + setState(() { + isEdit = false; + }); + }, + onSuccess: () { + context.read().add( + PrinterLoaderEvent.getByCode('ticket'), + ); + 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: 'ticket', + onSuccess: () { + context.read().add( + PrinterLoaderEvent.getByCode('ticket'), + ); + }, + ), + ), + ); + }, + ), + ], + ), + ), + ); + } +} 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 41fe8b2..ea93221 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 @@ -2,9 +2,11 @@ import 'package:flutter/material.dart'; import '../../../../../components/page/page_title.dart'; import '../../../../../components/tab/custom_tabbar.dart'; +import 'printer/setting_printer_bar.dart'; import 'printer/setting_printer_checker.dart'; import 'printer/setting_printer_kitchen.dart'; import 'printer/setting_printer_receipt.dart'; +import 'printer/setting_printer_ticket.dart'; class SettingPrinterSection extends StatelessWidget { const SettingPrinterSection({super.key}); @@ -31,8 +33,8 @@ class SettingPrinterSection extends StatelessWidget { SettingPrinterReceipt(), SettingPrinterChecker(), SettingPrinterKitchen(), - Text('Bar Printer'), - Text('Tiket Printer'), + SettingPrinterBar(), + SettingPrinterTicket(), ], ), ),