ocbo-esign-mobile/lib/main.dart
2025-12-18 17:13:23 +08:00

71 lines
2.5 KiB
Dart

import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter_dotenv/flutter_dotenv.dart';
import 'package:go_router/go_router.dart';
import 'package:ocbo_esign_mobile/blocs/user/user_bloc.dart';
import 'package:ocbo_esign_mobile/pages/approval_page.dart';
import 'package:ocbo_esign_mobile/pages/index_page.dart';
import 'package:ocbo_esign_mobile/pages/login_page.dart';
import 'package:ocbo_esign_mobile/pages/validate_page.dart';
import 'package:ocbo_esign_mobile/pages/validation_result_page.dart';
Future<void> main() async {
await dotenv.load(fileName: ".env");
runApp(const MyApp());
}
final _router = GoRouter(
initialLocation: '/',
routes: [
GoRoute(name: 'index', path: '/', builder: (context, state) => const IndexPage()),
GoRoute(
name: 'login',
path: '/login',
builder: (context, state) => const LoginPage(),
pageBuilder: (BuildContext context, GoRouterState state) => CustomTransitionPage<void>(
key: state.pageKey,
child: const LoginPage(),
transitionsBuilder: (context, animation, secondaryAnimation, child) {
return SlideTransition(
position: Tween<Offset>(begin: Offset(-1.0, 0.0), end: Offset.zero).animate(animation),
child: child,
);
},
),
),
GoRoute(name: 'approval', path: '/approval', builder: (context, state) => const ApprovalPage()),
GoRoute(
name: 'validate',
path: '/validate',
builder: (context, state) => const ValidatePage(),
pageBuilder: (BuildContext context, GoRouterState state) => CustomTransitionPage<void>(
key: state.pageKey,
child: const ValidatePage(),
transitionsBuilder: (context, animation, secondaryAnimation, child) {
return SlideTransition(
position: Tween<Offset>(begin: Offset(1.0, 0.0), end: Offset.zero).animate(animation),
child: child,
);
},
),
),
// GoRoute(name: 'validate', path: '/validate', builder: (context, state) => const ValidatePage()),
GoRoute(name: 'result', path: '/result', builder: (context, state) => const ValidationResultPage()),
],
);
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MultiBlocProvider(
providers: [BlocProvider(create: (context) => UserBloc())],
child: MaterialApp.router(
debugShowCheckedModeBanner: false,
theme: ThemeData(useMaterial3: true),
routerConfig: _router,
),
);
}
}