feat: update outlet

This commit is contained in:
efrilm
2025-08-05 15:25:10 +07:00
parent 5af0259f0a
commit 935b6b9a5b
10 changed files with 1421 additions and 441 deletions
@@ -1,6 +1,10 @@
import 'package:enaklo_pos/core/components/buttons.dart';
import 'package:enaklo_pos/core/components/custom_modal_dialog.dart';
import 'package:enaklo_pos/core/components/spaces.dart';
import 'package:enaklo_pos/core/extensions/build_context_ext.dart';
import 'package:enaklo_pos/presentation/home/bloc/outlet_loader/outlet_loader_bloc.dart';
import 'package:enaklo_pos/presentation/home/bloc/user_update_outlet/user_update_outlet_bloc.dart';
import 'package:enaklo_pos/presentation/home/models/outlet_model.dart';
import 'package:enaklo_pos/presentation/home/widgets/outlet_card.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
@@ -13,6 +17,19 @@ class OutletDialog extends StatefulWidget {
}
class _OutletDialogState extends State<OutletDialog> {
Outlet? selectedOutlet;
void selectOutlet(Outlet outlet) {
setState(() {
if (selectedOutlet == outlet) {
selectedOutlet = null; // Deselect jika outlet yang sama diklik
} else {
selectedOutlet =
outlet; // Select outlet baru (akan mengganti selection sebelumnya)
}
});
}
@override
void initState() {
super.initState();
@@ -38,12 +55,40 @@ class _OutletDialogState extends State<OutletDialog> {
child: Text(message),
),
loaded: (outlets) => Column(
children: List.generate(
outlets.length,
(index) => OutletCard(
outlet: outlets[index],
children: [
...List.generate(
outlets.length,
(index) => GestureDetector(
onTap: () {
selectOutlet(outlets[index]);
},
child: OutletCard(
outlet: outlets[index],
isSelected: selectedOutlet == outlets[index],
),
),
),
),
SpaceHeight(24),
BlocBuilder<UserUpdateOutletBloc, UserUpdateOutletState>(
builder: (context, state) {
return state.maybeWhen(
orElse: () => Button.filled(
onPressed: selectedOutlet == null
? null
: () {
context.read<UserUpdateOutletBloc>().add(
UserUpdateOutletEvent.update(
selectedOutlet!.id ?? ""));
},
label: 'Terapkan',
),
loading: () => Center(
child: CircularProgressIndicator(),
),
);
},
),
],
),
);
},