pharmacy_mobile/lib/main.dart

180 lines
5.7 KiB
Dart

import 'package:flutter/material.dart';
import 'package:flutter_dotenv/flutter_dotenv.dart';
import 'package:pharmacy_mobile/auth/auth_gate.dart';
import 'package:pharmacy_mobile/blocs/caches/categorylist/categorylist_cache_bloc.dart';
import 'package:pharmacy_mobile/blocs/caches/genericlist/genericlist_cache_bloc.dart';
import 'package:pharmacy_mobile/blocs/caches/manufacturerlist/manufacturerlist_cache_bloc.dart';
import 'package:pharmacy_mobile/blocs/caches/medicinelist/medicinelist_cache_bloc.dart';
import 'package:pharmacy_mobile/blocs/caches/stocklist/stocklist_cache_bloc.dart';
import 'package:pharmacy_mobile/blocs/caches/typelist/typelist_cache_bloc.dart';
import 'package:pharmacy_mobile/blocs/guest/guest_bloc.dart';
import 'package:pharmacy_mobile/blocs/language/language_bloc.dart';
import 'package:pharmacy_mobile/blocs/user/user_bloc.dart';
import 'package:pharmacy_mobile/pages/add_category_page.dart';
import 'package:pharmacy_mobile/pages/add_generics_page.dart';
import 'package:pharmacy_mobile/pages/add_manufacturer.dart';
import 'package:pharmacy_mobile/pages/add_medicine_page.dart';
import 'package:pharmacy_mobile/pages/add_stock_page.dart';
import 'package:pharmacy_mobile/pages/add_type_page.dart';
import 'package:pharmacy_mobile/pages/customer_page.dart';
import 'package:pharmacy_mobile/pages/customer_pages/customer_itemview_page.dart';
import 'package:pharmacy_mobile/pages/delete_stock_page.dart';
import 'package:pharmacy_mobile/pages/list_stocks_page.dart';
import 'package:pharmacy_mobile/pages/login_page.dart';
import 'package:go_router/go_router.dart';
import 'package:pharmacy_mobile/pages/main_page.dart';
import 'package:pharmacy_mobile/pages/register_page.dart';
import 'package:pharmacy_mobile/pages/settings_pages/language_setting_page.dart';
import 'package:supabase_flutter/supabase_flutter.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
Future<void> main() async {
await dotenv.load(fileName: ".env");
WidgetsFlutterBinding.ensureInitialized();
final supUrl = dotenv.env['SUPABASE_URL']!;
final supAnonkey = dotenv.env['SUPABASE_ANON_KEY']!;
await Supabase.initialize(
url: supUrl,
anonKey: supAnonkey,
);
runApp(MyApp());
}
final _router = GoRouter(
initialLocation: '/',
routes: [
GoRoute(
name: 'index',
path: '/',
builder: (context, state) => const AuthGate(),
),
GoRoute(
name: 'login',
path: '/login',
builder: (context, state) => const LoginPage(),
),
GoRoute(
name: 'register',
path: '/register',
builder: (context, state) => const RegisterPage(),
),
GoRoute(
name: 'main',
path: '/main',
builder: (context, state) => const MainPage(),
),
GoRoute(
name: 'addmanufactorer',
path: '/addmanufactorer',
builder: (context, state) => const AddManufacturerPage(),
),
GoRoute(
name: 'addmedicines',
path: '/addmedicines',
builder: (context, state) => const AddMedicinePage(),
),
GoRoute(
name: 'addgenerics',
path: '/addgenerics',
builder: (context, state) => const AddGenericsPage(),
),
GoRoute(
name: 'addtype',
path: '/addtype',
builder: (context, state) => const AddTypePage(),
),
GoRoute(
name: 'addcategory',
path: '/addcategory',
builder: (context, state) => const AddCategoryPage(),
),
GoRoute(
name: 'addstock',
path: '/addstock',
builder: (context, state) => const AddStockPage(),
),
GoRoute(
name: 'liststocks',
path: '/liststocks',
builder: (context, state) => const ListStocksPage(),
),
GoRoute(
name: 'deletestock',
path: '/deletestock',
builder: (context, state) => const DeleteStockPage(),
),
GoRoute(
name: 'customer',
path: '/customer',
builder: (context, state) => const CustomerPage(),
),
GoRoute(
name: 'itemview',
path: '/itemview',
builder: (context, state) => const CustomerItemviewPage(),
),
GoRoute(
path: '/languagesetting',
pageBuilder: (BuildContext context, GoRouterState state) => CustomTransitionPage<void>(
key: state.pageKey,
child: const LanguageSettingPage(),
transitionsBuilder: (BuildContext context, Animation<double> animation, Animation<double> secondaryAnimation,
Widget child) =>
SlideTransition(
position: animation.drive(
Tween<Offset>(begin: Offset(0.95, 0), end: Offset.zero).chain(CurveTween(curve: Curves.easeIn))),
child: child),
),
// builder: (context, state) => const LanguageSettingPage(),
),
],
);
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MultiBlocProvider(
providers: [
BlocProvider(
create: (context) => GuestBloc(),
),
BlocProvider(
create: (context) => UserBloc(),
),
BlocProvider(
create: (context) => CategoryListBloc(),
),
BlocProvider(
create: (context) => GenericListBloc(),
),
BlocProvider(
create: (context) => TypeListBloc(),
),
BlocProvider(
create: (context) => ManufacturerListBloc(),
),
BlocProvider(
create: (context) => MedicineListBloc(),
),
BlocProvider(
create: (context) => StockListBloc(),
),
BlocProvider(
create: (context) => LanguageBloc(),
),
],
child: MaterialApp.router(
debugShowCheckedModeBanner: false,
theme: ThemeData(
useMaterial3: true,
),
routerConfig: _router,
),
);
}
}