2025-09-20 03:56:07 +07:00

173 lines
7.3 KiB
Dart

import 'dart:developer';
import 'package:enaklo_pos/core/components/buttons.dart';
import 'package:enaklo_pos/core/constants/colors.dart';
import 'package:enaklo_pos/presentation/setting/widgets/settings_title.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:enaklo_pos/presentation/setting/bloc/sync_product/sync_product_bloc.dart';
class SyncDataPage extends StatefulWidget {
const SyncDataPage({super.key});
@override
State<SyncDataPage> createState() => _SyncDataPageState();
}
class _SyncDataPageState extends State<SyncDataPage> {
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: AppColors.background,
body: Column(
children: [
SettingsTitle('Sync Data'),
Padding(
padding: const EdgeInsets.all(16.0),
child: Column(
children: [
Container(
padding: const EdgeInsets.all(16.0),
margin: const EdgeInsets.only(bottom: 16.0),
decoration: BoxDecoration(
color: AppColors.white,
borderRadius: BorderRadius.circular(8.0),
),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text(
'Sinkronasikan Produk',
style: TextStyle(
color: AppColors.black,
fontSize: 16,
fontWeight: FontWeight.w500,
),
),
BlocConsumer<SyncProductBloc, SyncProductState>(
listener: (context, state) {
state.maybeWhen(
orElse: () {},
error: (message) {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text(message),
backgroundColor: Colors.red,
),
);
},
loaded: (productResponseModel) async {
// await ProductLocalDatasource.instance
// .deleteAllProducts();
// await ProductLocalDatasource.instance
// .insertProducts(
// productResponseModel.data!.products!,
// );
// ScaffoldMessenger.of(context).showSnackBar(
// const SnackBar(
// content: Text('Sync Product Success2'),
// backgroundColor: Colors.green,
// ),
// );
},
);
},
builder: (context, state) {
return state.maybeWhen(
orElse: () {
return Button.filled(
width: 100,
height: 40,
onPressed: () {
context.read<SyncProductBloc>().add(
const SyncProductEvent.syncProduct());
},
label: 'Sinkronasikan',
);
},
loading: () {
return const Center(
child: CircularProgressIndicator(),
);
},
);
},
),
],
),
),
Container(
padding: const EdgeInsets.all(16.0),
decoration: BoxDecoration(
color: AppColors.white,
borderRadius: BorderRadius.circular(8.0),
),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text(
'Sinkronasikan Pesanan',
style: TextStyle(
color: AppColors.black,
fontSize: 16,
fontWeight: FontWeight.w500,
),
),
// BlocConsumer<SyncOrderBloc, SyncOrderState>(
// listener: (context, state) {
// state.maybeWhen(
// orElse: () {},
// error: (message) {
// ScaffoldMessenger.of(context).showSnackBar(
// SnackBar(
// content: Text(message),
// backgroundColor: Colors.red,
// ),
// );
// },
// loaded: () {
// // ScaffoldMessenger.of(context).showSnackBar(
// // const SnackBar(
// // content: Text('Sync Order Success'),
// // backgroundColor: Colors.green,
// // ),
// // );
// },
// );
// },
// builder: (context, state) {
// return state.maybeWhen(
// orElse: () {
// return Button.filled(
// width: 100,
// height: 40,
// onPressed: () {
// log("🔘 Sync Order button pressed");
// log("🔘 SyncOrderBloc instance: ${context.read<SyncOrderBloc>()}");
// context
// .read<SyncOrderBloc>()
// .add(const SyncOrderEvent.syncOrder());
// log("🔘 SyncOrderEvent.syncOrder dispatched");
// },
// label: 'Sinkronasikan',
// );
// },
// loading: () {
// return const Center(
// child: CircularProgressIndicator(),
// );
// },
// );
// },
// )
],
),
),
],
),
),
],
),
);
}
}