import 'package:enaklo_pos/core/components/custom_modal_dialog.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:enaklo_pos/core/components/custom_text_field.dart'; import 'package:enaklo_pos/core/extensions/build_context_ext.dart'; import 'package:enaklo_pos/presentation/setting/bloc/add_discount/add_discount_bloc.dart'; import 'package:enaklo_pos/presentation/setting/bloc/discount/discount_bloc.dart'; import '../../../core/components/buttons.dart'; import '../../../core/components/spaces.dart'; import '../models/discount_model.dart'; class FormDiscountDialog extends StatefulWidget { final DiscountModel? data; const FormDiscountDialog({super.key, this.data}); @override State createState() => _FormDiscountDialogState(); } class _FormDiscountDialogState extends State { final nameController = TextEditingController(); final descriptionController = TextEditingController(); final discountController = TextEditingController(); @override Widget build(BuildContext context) { return CustomModalDialog( title: widget.data == null ? 'Tambah Diskon' : 'Edit Diskon', contentPadding: const EdgeInsets.all(16.0), child: SingleChildScrollView( child: SizedBox( width: context.deviceWidth / 3, child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ CustomTextField( controller: nameController, label: 'Nama Diskon', onChanged: (value) {}, ), const SpaceHeight(24.0), CustomTextField( controller: descriptionController, label: 'Deskripsi (Opsional)', onChanged: (value) {}, ), const SpaceHeight(24.0), Row( crossAxisAlignment: CrossAxisAlignment.end, children: [ Flexible( child: CustomTextField( controller: TextEditingController(text: 'Presentase'), label: 'Nilai', suffixIcon: const Icon(Icons.chevron_right), onChanged: (value) {}, readOnly: true, ), ), const SpaceWidth(14.0), Flexible( child: CustomTextField( showLabel: false, controller: discountController, label: 'Percent', prefixIcon: const Icon(Icons.percent), onChanged: (value) {}, keyboardType: TextInputType.number, ), ), ], ), const SpaceHeight(24.0), BlocConsumer( listener: (context, state) { state.maybeWhen( orElse: () {}, success: () { context .read() .add(const DiscountEvent.getDiscounts()); context.pop(); }, ); }, builder: (context, state) { return state.maybeWhen(orElse: () { return Button.filled( onPressed: () { context.read().add( AddDiscountEvent.addDiscount( name: nameController.text, description: descriptionController.text, value: int.parse(discountController.text), ), ); }, label: 'Simpan Diskon', ); }, loading: () { return const Center( child: CircularProgressIndicator(), ); }); }, ) ], ), ), ), ); } }