318 lines
14 KiB
Dart
318 lines
14 KiB
Dart
import 'dart:developer';
|
|
import 'package:enaklo_pos/core/constants/theme.dart';
|
|
import 'package:enaklo_pos/data/datasources/analytic_remote_datasource.dart';
|
|
import 'package:enaklo_pos/data/datasources/customer_remote_datasource.dart';
|
|
import 'package:enaklo_pos/data/datasources/file_remote_datasource.dart';
|
|
import 'package:enaklo_pos/data/datasources/outlet_remote_data_source.dart';
|
|
import 'package:enaklo_pos/data/datasources/table_remote_datasource.dart';
|
|
import 'package:enaklo_pos/data/datasources/user_remote_datasource.dart';
|
|
import 'package:enaklo_pos/presentation/customer/bloc/customer_form/customer_form_bloc.dart';
|
|
import 'package:enaklo_pos/presentation/customer/bloc/customer_loader/customer_loader_bloc.dart';
|
|
import 'package:enaklo_pos/presentation/home/bloc/category_loader/category_loader_bloc.dart';
|
|
import 'package:enaklo_pos/presentation/home/bloc/current_outlet/current_outlet_bloc.dart';
|
|
import 'package:enaklo_pos/presentation/home/bloc/order_form/order_form_bloc.dart';
|
|
import 'package:enaklo_pos/presentation/home/bloc/outlet_loader/outlet_loader_bloc.dart';
|
|
import 'package:enaklo_pos/presentation/home/bloc/product_loader/product_loader_bloc.dart';
|
|
import 'package:enaklo_pos/presentation/home/bloc/user_update_outlet/user_update_outlet_bloc.dart';
|
|
import 'package:enaklo_pos/presentation/refund/bloc/refund_bloc.dart';
|
|
import 'package:enaklo_pos/presentation/report/blocs/profit_loss/profit_loss_bloc.dart';
|
|
import 'package:enaklo_pos/presentation/sales/blocs/order_loader/order_loader_bloc.dart';
|
|
import 'package:enaklo_pos/presentation/sales/blocs/payment_form/payment_form_bloc.dart';
|
|
import 'package:enaklo_pos/presentation/setting/bloc/get_printer_ticket/get_printer_ticket_bloc.dart';
|
|
import 'package:enaklo_pos/presentation/setting/bloc/upload_file/upload_file_bloc.dart';
|
|
import 'package:enaklo_pos/presentation/void/bloc/void_order_bloc.dart';
|
|
import 'package:flutter/material.dart';
|
|
import 'package:enaklo_pos/data/datasources/auth_local_datasource.dart';
|
|
import 'package:enaklo_pos/data/datasources/auth_remote_datasource.dart';
|
|
import 'package:enaklo_pos/data/datasources/category_remote_datasource.dart';
|
|
import 'package:enaklo_pos/data/datasources/discount_remote_datasource.dart';
|
|
import 'package:enaklo_pos/data/datasources/midtrans_remote_datasource.dart';
|
|
import 'package:enaklo_pos/data/datasources/order_remote_datasource.dart';
|
|
import 'package:enaklo_pos/data/datasources/product_local_datasource.dart';
|
|
import 'package:enaklo_pos/data/datasources/product_remote_datasource.dart';
|
|
import 'package:enaklo_pos/data/datasources/payment_methods_remote_datasource.dart';
|
|
import 'package:enaklo_pos/data/datasources/settings_local_datasource.dart';
|
|
import 'package:enaklo_pos/presentation/auth/bloc/logout/logout_bloc.dart';
|
|
import 'package:enaklo_pos/presentation/auth/login_page.dart';
|
|
import 'package:enaklo_pos/presentation/home/bloc/get_table_status/get_table_status_bloc.dart';
|
|
import 'package:enaklo_pos/presentation/home/bloc/online_checker/online_checker_bloc.dart';
|
|
import 'package:enaklo_pos/presentation/home/bloc/payment_methods/payment_methods_bloc.dart';
|
|
import 'package:enaklo_pos/presentation/home/bloc/qris/qris_bloc.dart';
|
|
import 'package:enaklo_pos/presentation/home/bloc/status_table/status_table_bloc.dart';
|
|
import 'package:enaklo_pos/presentation/home/bloc/checkout/checkout_bloc.dart';
|
|
import 'package:enaklo_pos/presentation/report/blocs/item_sales_report/item_sales_report_bloc.dart';
|
|
import 'package:enaklo_pos/presentation/report/blocs/payment_method_report/payment_method_report_bloc.dart';
|
|
import 'package:enaklo_pos/presentation/report/blocs/product_sales/product_sales_bloc.dart';
|
|
import 'package:enaklo_pos/presentation/report/blocs/summary/summary_bloc.dart';
|
|
import 'package:enaklo_pos/presentation/sales/blocs/bloc/last_order_table_bloc.dart';
|
|
import 'package:enaklo_pos/presentation/sales/blocs/day_sales/day_sales_bloc.dart';
|
|
import 'package:enaklo_pos/presentation/setting/bloc/add_product/add_product_bloc.dart';
|
|
import 'package:enaklo_pos/presentation/setting/bloc/create_printer/create_printer_bloc.dart';
|
|
import 'package:enaklo_pos/presentation/setting/bloc/get_categories/get_categories_bloc.dart';
|
|
import 'package:enaklo_pos/presentation/setting/bloc/get_printer_bar/get_printer_bar_bloc.dart';
|
|
import 'package:enaklo_pos/presentation/setting/bloc/get_printer_checker/get_printer_checker_bloc.dart';
|
|
import 'package:enaklo_pos/presentation/setting/bloc/get_printer_kitchen/get_printer_kitchen_bloc.dart';
|
|
import 'package:enaklo_pos/presentation/setting/bloc/get_printer_receipt/get_printer_receipt_bloc.dart';
|
|
import 'package:enaklo_pos/presentation/setting/bloc/get_products/get_products_bloc.dart';
|
|
import 'package:enaklo_pos/presentation/setting/bloc/update_product/update_product_bloc.dart';
|
|
import 'package:enaklo_pos/presentation/setting/bloc/update_printer/update_printer_bloc.dart';
|
|
import 'package:enaklo_pos/presentation/table/blocs/change_position_table/change_position_table_bloc.dart';
|
|
import 'package:enaklo_pos/presentation/table/blocs/create_table/create_table_bloc.dart';
|
|
import 'package:enaklo_pos/presentation/table/blocs/get_table/get_table_bloc.dart';
|
|
import 'package:enaklo_pos/presentation/home/bloc/local_product/local_product_bloc.dart';
|
|
import 'package:enaklo_pos/presentation/home/bloc/order/order_bloc.dart';
|
|
import 'package:enaklo_pos/presentation/report/blocs/transaction_report/transaction_report_bloc.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 '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';
|
|
import 'package:enaklo_pos/presentation/setting/bloc/tax_settings/tax_settings_bloc.dart';
|
|
import 'package:enaklo_pos/presentation/table/blocs/update_table/update_table_bloc.dart';
|
|
import 'package:enaklo_pos/presentation/home/bloc/add_order_items/add_order_items_bloc.dart';
|
|
import 'package:flutter/services.dart';
|
|
|
|
import 'presentation/auth/bloc/login/login_bloc.dart';
|
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
|
|
|
import 'presentation/home/pages/dashboard_page.dart';
|
|
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
|
|
|
void main() async {
|
|
WidgetsFlutterBinding.ensureInitialized();
|
|
await SystemChrome.setPreferredOrientations([
|
|
DeviceOrientation.landscapeLeft,
|
|
DeviceOrientation.landscapeRight,
|
|
]);
|
|
// await LamanPrint.init();
|
|
// final dir = await getApplicationDocumentsDirectory();
|
|
// Hive.init(dir.path);
|
|
// Hive.registerAdapter(TableDataAdapter());
|
|
runApp(ProviderScope(child: MyApp()));
|
|
}
|
|
|
|
class MyApp extends StatefulWidget {
|
|
const MyApp({super.key});
|
|
|
|
@override
|
|
State<MyApp> createState() => _MyAppState();
|
|
}
|
|
|
|
class _MyAppState extends State<MyApp> {
|
|
// This widget is the root of your application.
|
|
// final iminPrinter = IminPrinter();
|
|
String version = '1.0.0';
|
|
@override
|
|
void initState() {
|
|
super.initState();
|
|
getSdkVersion();
|
|
}
|
|
|
|
Future<void> getSdkVersion() async {
|
|
// final sdkVersion = await iminPrinter.getSdkVersion();
|
|
if (!mounted) return;
|
|
// setState(() {
|
|
// version = sdkVersion!;
|
|
// });
|
|
}
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return MultiBlocProvider(
|
|
providers: [
|
|
BlocProvider(
|
|
create: (context) => LoginBloc(AuthRemoteDatasource()),
|
|
),
|
|
BlocProvider(
|
|
create: (context) => LogoutBloc(AuthRemoteDatasource()),
|
|
),
|
|
BlocProvider(
|
|
create: (context) => SyncProductBloc(ProductRemoteDatasource()),
|
|
),
|
|
BlocProvider(
|
|
create: (context) =>
|
|
LocalProductBloc(ProductLocalDatasource.instance),
|
|
),
|
|
BlocProvider(
|
|
create: (context) =>
|
|
CheckoutBloc(settingsLocalDatasource: SettingsLocalDatasource()),
|
|
),
|
|
BlocProvider(
|
|
create: (context) => TaxSettingsBloc(SettingsLocalDatasource()),
|
|
),
|
|
BlocProvider(
|
|
create: (context) {
|
|
log("🔧 main.dart: Creating OrderBloc instance");
|
|
return OrderBloc(OrderRemoteDatasource());
|
|
},
|
|
),
|
|
BlocProvider(
|
|
create: (context) => SyncOrderBloc(OrderRemoteDatasource()),
|
|
),
|
|
BlocProvider(
|
|
create: (context) => DiscountBloc(DiscountRemoteDatasource()),
|
|
),
|
|
BlocProvider(
|
|
create: (context) => AddDiscountBloc(DiscountRemoteDatasource()),
|
|
),
|
|
BlocProvider(
|
|
create: (context) => TransactionReportBloc(OrderRemoteDatasource()),
|
|
),
|
|
BlocProvider(
|
|
create: (context) => CreateTableBloc(TableRemoteDataSource()),
|
|
),
|
|
BlocProvider(
|
|
create: (context) => ChangePositionTableBloc(TableRemoteDataSource()),
|
|
),
|
|
BlocProvider(
|
|
create: (context) => GetTableBloc(TableRemoteDataSource()),
|
|
),
|
|
BlocProvider(
|
|
create: (context) => UpdateTableBloc(),
|
|
),
|
|
BlocProvider(
|
|
create: (context) => StatusTableBloc(ProductLocalDatasource.instance),
|
|
),
|
|
BlocProvider(
|
|
create: (context) =>
|
|
LastOrderTableBloc(ProductLocalDatasource.instance),
|
|
),
|
|
BlocProvider(
|
|
create: (context) => GetTableStatusBloc(TableRemoteDataSource()),
|
|
),
|
|
BlocProvider(
|
|
create: (context) => AddProductBloc(ProductRemoteDatasource()),
|
|
),
|
|
BlocProvider(
|
|
create: (context) => UpdateProductBloc(ProductRemoteDatasource()),
|
|
),
|
|
BlocProvider(
|
|
create: (context) => GetProductsBloc(ProductRemoteDatasource()),
|
|
),
|
|
BlocProvider(
|
|
create: (context) => GetCategoriesBloc(CategoryRemoteDatasource()),
|
|
),
|
|
BlocProvider(
|
|
create: (context) => SummaryBloc(AnalyticRemoteDatasource()),
|
|
),
|
|
BlocProvider(
|
|
create: (context) => ProfitLossBloc(AnalyticRemoteDatasource()),
|
|
),
|
|
BlocProvider(
|
|
create: (context) => ProductSalesBloc(AnalyticRemoteDatasource()),
|
|
),
|
|
BlocProvider(
|
|
create: (context) => ItemSalesReportBloc(AnalyticRemoteDatasource()),
|
|
),
|
|
BlocProvider(
|
|
create: (context) =>
|
|
PaymentMethodReportBloc(AnalyticRemoteDatasource()),
|
|
),
|
|
BlocProvider(
|
|
create: (context) => DaySalesBloc(ProductLocalDatasource.instance),
|
|
),
|
|
BlocProvider(
|
|
create: (context) => QrisBloc(MidtransRemoteDatasource()),
|
|
),
|
|
BlocProvider(
|
|
create: (context) =>
|
|
PaymentMethodsBloc(PaymentMethodsRemoteDatasource()),
|
|
),
|
|
BlocProvider(
|
|
create: (context) => OnlineCheckerBloc(),
|
|
),
|
|
BlocProvider(
|
|
create: (context) => CreatePrinterBloc(),
|
|
),
|
|
BlocProvider(
|
|
create: (context) => UpdatePrinterBloc(),
|
|
),
|
|
BlocProvider(
|
|
create: (context) => GetPrinterReceiptBloc(),
|
|
),
|
|
BlocProvider(
|
|
create: (context) => GetPrinterCheckerBloc(),
|
|
),
|
|
BlocProvider(
|
|
create: (context) => GetPrinterKitchenBloc(),
|
|
),
|
|
BlocProvider(
|
|
create: (context) => GetPrinterBarBloc(),
|
|
),
|
|
BlocProvider(
|
|
create: (context) => AddOrderItemsBloc(OrderRemoteDatasource()),
|
|
),
|
|
BlocProvider(
|
|
create: (context) => ProductLoaderBloc(ProductRemoteDatasource()),
|
|
),
|
|
BlocProvider(
|
|
create: (context) => OrderFormBloc(OrderRemoteDatasource()),
|
|
),
|
|
BlocProvider(
|
|
create: (context) => OrderLoaderBloc(OrderRemoteDatasource()),
|
|
),
|
|
BlocProvider(
|
|
create: (context) => OutletLoaderBloc(OutletRemoteDataSource()),
|
|
),
|
|
BlocProvider(
|
|
create: (context) => CustomerLoaderBloc(CustomerRemoteDataSource()),
|
|
),
|
|
BlocProvider(
|
|
create: (context) => CustomerFormBloc(CustomerRemoteDataSource()),
|
|
),
|
|
BlocProvider(
|
|
create: (context) => PaymentFormBloc(OrderRemoteDatasource()),
|
|
),
|
|
BlocProvider(
|
|
create: (context) => CurrentOutletBloc(OutletRemoteDataSource()),
|
|
),
|
|
BlocProvider(
|
|
create: (context) => VoidOrderBloc(OrderRemoteDatasource()),
|
|
),
|
|
BlocProvider(
|
|
create: (context) => RefundBloc(OrderRemoteDatasource()),
|
|
),
|
|
BlocProvider(
|
|
create: (context) => UserUpdateOutletBloc(UserRemoteDatasource()),
|
|
),
|
|
BlocProvider(
|
|
create: (context) => UploadFileBloc(FileRemoteDataSource()),
|
|
),
|
|
BlocProvider(
|
|
create: (context) => CategoryLoaderBloc(CategoryRemoteDatasource()),
|
|
),
|
|
BlocProvider(
|
|
create: (context) => GetPrinterTicketBloc(),
|
|
),
|
|
],
|
|
child: MaterialApp(
|
|
debugShowCheckedModeBanner: false,
|
|
title: 'POS Resto App',
|
|
theme: getApplicationTheme,
|
|
home: FutureBuilder<bool>(
|
|
future: AuthLocalDataSource().isAuthDataExists(),
|
|
builder: (context, snapshot) {
|
|
if (snapshot.connectionState == ConnectionState.waiting) {
|
|
return const Scaffold(
|
|
body: Center(
|
|
child: CircularProgressIndicator(),
|
|
),
|
|
);
|
|
}
|
|
if (snapshot.hasData) {
|
|
if (snapshot.data!) {
|
|
return const DashboardPage();
|
|
} else {
|
|
return const LoginPage();
|
|
}
|
|
}
|
|
return const Scaffold(
|
|
body: Center(
|
|
child: Text('Error'),
|
|
),
|
|
);
|
|
}),
|
|
),
|
|
);
|
|
}
|
|
}
|