feat: update outlet
This commit is contained in:
@@ -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(),
|
||||
),
|
||||
);
|
||||
},
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user