MIF_E31230549/lib/main.dart

159 lines
5.4 KiB
Dart

import 'package:flutter/material.dart';
import 'package:shared_preferences/shared_preferences.dart';
// pages umum
import 'pages/login_page.dart';
import 'pages/register_page.dart';
import 'pages/landing_page.dart';
// dashboard berdasarkan role
import 'kader/dashboard_kader.dart';
import 'bidan/dashboard_bidan.dart';
import 'ibu/dashboard_ibu.dart';
//route admin
import 'pages/profile_admin.dart';
//route menu kader
import 'kader/data_kehamilan.dart';
import 'kader/data_balita.dart';
import 'kader/data_pemeriksaan.dart';
import 'kader/data_kehadiran.dart';
import 'kader/profile_kader.dart';
import 'kader/data_ibu.dart';
//route menu bidan
import 'bidan/periksa_kehamilan.dart';
import 'bidan/data_gizi_balita.dart';
import 'bidan/imunisasi.dart';
import 'bidan/jadwal_posyandu.dart';
import 'bidan/jadwal_anc.dart';
import 'bidan/edukasi.dart';
import 'bidan/laporan.dart';
import 'bidan/profile_bidan.dart';
//route menu ibu
import 'ibu/pemeriksaan_anc.dart';
import 'ibu/pemeriksaan_balita.dart';
import 'ibu/crud_grafik/grafik_anak_bb_usia.dart';
import 'ibu/crud_grafik/grafik_anak_tb_usia.dart';
import 'ibu/crud_grafik/grafik_anak_bb_tb.dart';
import 'ibu/crud_edukasi/edukasi_balita.dart';
import 'ibu/crud_edukasi/edukasi_ibu_hamil.dart';
import 'ibu/profile_ibu.dart';
//route petugas
import 'pages/petugas.dart';
import 'pages/dashboard_admin.dart';
//route desa
import 'pages/data_desa.dart';
//route dusun
import 'pages/data_dusun.dart';
void main() async {
// 1. Pastikan inisialisasi Flutter sudah siap sebelum memanggil SharedPreferences
WidgetsFlutterBinding.ensureInitialized();
// 2. Akses SharedPreferences untuk mengecek status login
final prefs = await SharedPreferences.getInstance();
// 3. Ambil data 'isLogin' dan 'role' (ini harus sesuai dengan kunci yang disimpan di LoginPage)
bool isLogin = prefs.getBool("isLogin") ?? false;
String role = prefs.getString("role") ?? "";
// 4. Tentukan halaman pertama yang muncul saat aplikasi dibuka
String initialRoute = '/'; // Default ke Landing Page
if (isLogin) {
// Jika sudah pernah login, arahkan ke dashboard sesuai role yang tersimpan
switch (role.toLowerCase()) {
case "admin":
initialRoute = '/dashboard-admin';
break;
case "kader":
initialRoute = '/dashboard-kader';
break;
case "bidan":
initialRoute = '/dashboard-bidan';
break;
case "ibu":
initialRoute = '/dashboard-ibu';
break;
default:
initialRoute = '/';
}
}
runApp(MyApp(initialRoute: initialRoute));
}
class MyApp extends StatelessWidget {
final String initialRoute;
const MyApp({super.key, required this.initialRoute});
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
title: 'm-Posyandu', // Nama aplikasi diperbarui
// Menggunakan rute awal dinamis hasil pengecekan SharedPreferences
initialRoute: initialRoute,
routes: {
// --- PAGES UMUM ---
'/': (context) => const LandingPage(),
'/login': (context) {
final args = ModalRoute.of(context)?.settings.arguments as bool?;
return LoginPage(fromGuard: args ?? false);
},
'/register': (context) => RegisterPage(),
// --- DASHBOARD BERDASARKAN ROLE ---
'/dashboard-admin': (context) => const DashboardAdminPage(),
'/dashboard-kader': (context) => const DashboardKaderPage(),
'/dashboard-bidan': (context) => const DashboardBidanPage(),
'/dashboard-ibu': (context) => const DashboardIbuPage(),
// --- ROUTE ADMIN ---
'/profile-admin': (context) => const ProfileAdminPage(),
'/data-petugas': (context) => DataPetugasPage(),
'/data-desa': (context) => DataDesaPage(),
'/data-dusun': (context) => DataDusunPage(),
// --- ROUTE MENU KADER ---
'/data-ibu': (context) => const DataIbuPage(),
'/data-kehamilan': (context) => const DataIbuHamilPage(),
'/data-balita': (context) => const DataBalitaPage(),
'/data-pemeriksaan-balita': (context) =>
const DataPemeriksaanBalitaPage(),
'/data-kehadiran-posyandu': (context) =>
const DataKehadiranPosyanduPage(),
'/profile-kader': (context) => const ProfileKaderPage(),
// --- ROUTE MENU BIDAN ---
'/periksa-kehamilan': (context) => const DataPemeriksaanKehamilanPage(),
'/data-gizi-balita': (context) => const DataGiziBalitaPage(),
'/imunisasi': (context) => const DataImunisasiPage(),
'/jadwal-posyandu': (context) => const DataJadwalPosyanduPage(),
'/jadwal-anc': (context) => const JadwalAncPage(),
'/edukasi': (context) => const DataEdukasiPage(),
'/profile-bidan': (context) => const ProfileBidanPage(),
'/laporan': (context) => const DataLaporanPage(),
// --- ROUTE MENU IBU ---
'/pemeriksaan-anc': (context) => const PemeriksaanANCPage(),
'/pemeriksaan-balita': (context) => const PemeriksaanBalitaIbuPage(),
'/grafik-bb-u': (context) => const GrafikAnakBBUsiaPage(),
'/grafik-tb-u': (context) => const GrafikAnakTBUPage(),
'/grafik-bb-tb': (context) => const GrafikAnakBBTBPage(),
'/edukasi-balita': (context) => const EdukasiBalitaPage(),
'/edukasi-hamil': (context) => const EdukasiHamilPage(),
'/profile-ibu': (context) => const ProfileIbuPage(),
},
);
}
}