159 lines
5.4 KiB
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(),
|
|
},
|
|
);
|
|
}
|
|
}
|