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/data/datasources/product_local_datasource.dart'; import 'package:enaklo_pos/presentation/setting/bloc/sync_order/sync_order_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 createState() => _SyncDataPageState(); } class _SyncDataPageState extends State { @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( 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!, ); 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().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( 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()}"); context .read() .add(const SyncOrderEvent.syncOrder()); log("🔘 SyncOrderEvent.syncOrder dispatched"); }, label: 'Sinkronasikan', ); }, loading: () { return const Center( child: CircularProgressIndicator(), ); }, ); }, ) ], ), ), ], ), ), ], ), ); } }