MIF_E31210604/dashboard_sim/lib/main.dart

80 lines
2.8 KiB
Dart

import 'package:drawer/data/services/proyek/proyek_bloc.dart';
import 'package:drawer/data/services/proyek/proyek_service.dart';
import 'package:drawer/page/karyawan/karyawan.dart';
import 'package:flutter/material.dart';
import 'package:google_fonts/google_fonts.dart';
import 'package:drawer/constants/constants.dart';
import 'package:drawer/controller/MenuAppController.dart';
import 'package:drawer/data/services/auth/auth_bloc.dart';
import 'package:drawer/page/login/login.dart';
import 'package:drawer/page/proyek/proyek.dart';
import 'package:drawer/page/sidebar/main_screen.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:provider/provider.dart';
import 'package:shared_preferences/shared_preferences.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
SharedPreferences _prefs = await SharedPreferences.getInstance();
runApp(MyApp(prefs: _prefs));
}
class MyApp extends StatelessWidget {
final SharedPreferences? prefs;
const MyApp({Key? key, this.prefs}) : super(key: key);
@override
Widget build(BuildContext context) {
return MultiProvider(
providers: [
ChangeNotifierProvider(
create: (context) => MenuAppController(),
),
BlocProvider(create: (context) => AuthenticationBloc()),
BlocProvider(
create: (context) => ProyekBloc(proyekServices: ProyekServices()),
),
// BlocProvider<UserBloc>(
// create: (context) => UserBloc(userService: UserService()),
// ),
],
child: MaterialApp(
debugShowCheckedModeBanner: false,
title: 'Flutter Admin Panel',
theme: ThemeData.dark().copyWith(
scaffoldBackgroundColor: bgColor,
textTheme: GoogleFonts.poppinsTextTheme(Theme.of(context).textTheme)
.apply(bodyColor: Colors.white),
canvasColor: secondaryColor,
),
// Set initialRoute berdasarkan apakah token sudah ada
initialRoute:
prefs!.getString('token') != null ? '/dashboard' : '/login',
onGenerateRoute: (settings) {
switch (settings.name) {
case '/login':
return MaterialPageRoute(builder: (context) => Login());
case '/dashboard':
return MaterialPageRoute(builder: (context) => MainScreen());
case '/proyek':
return MaterialPageRoute(builder: (context) => proyek());
case '/karyawan':
return MaterialPageRoute(builder: (context) => karyawan());
default:
return null;
}
},
// home: MultiProvider(
// providers: [
// ChangeNotifierProvider(
// create: (context) => MenuAppController(),
// ),
// ],
// child: login(),
// ),
),
);
}
}