Tambahkan dependensi dan konfigurasi awal proyek

- Tambahkan dependensi utama: GetX, Supabase, SharedPreferences
- Konfigurasi struktur awal aplikasi dengan GetX
- Inisialisasi layanan Supabase
- Perbarui konfigurasi plugin untuk berbagai platform
- Ganti template default dengan struktur aplikasi baru
This commit is contained in:
Khafidh Fuadi
2025-03-08 10:20:57 +07:00
parent c5d0805e50
commit b1665307c5
28 changed files with 3259 additions and 112 deletions

View File

@ -0,0 +1,11 @@
import 'package:get/get.dart';
import 'package:penyaluran_app/app/modules/home/controllers/home_controller.dart';
class HomeBinding extends Bindings {
@override
void dependencies() {
Get.lazyPut<HomeController>(
() => HomeController(),
);
}
}

View File

@ -0,0 +1,14 @@
import 'package:get/get.dart';
import 'package:penyaluran_app/app/modules/auth/controllers/auth_controller.dart';
class HomeController extends GetxController {
final AuthController _authController = Get.find<AuthController>();
// Getter untuk mendapatkan user dari auth controller
get user => _authController.user;
// Metode untuk logout
void logout() {
_authController.logout();
}
}

View File

@ -0,0 +1,63 @@
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:penyaluran_app/app/modules/home/controllers/home_controller.dart';
class HomeView extends GetView<HomeController> {
const HomeView({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('Penyaluran App'),
actions: [
IconButton(
icon: const Icon(Icons.logout),
onPressed: controller.logout,
tooltip: 'Logout',
),
],
),
body: SafeArea(
child: Padding(
padding: const EdgeInsets.all(20.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
// Greeting
Text(
'Halo, ${controller.user?.email ?? 'Pengguna'}!',
style: const TextStyle(
fontSize: 24,
fontWeight: FontWeight.bold,
),
),
const SizedBox(height: 5),
const Text(
'Selamat datang di Penyaluran App',
style: TextStyle(
fontSize: 16,
color: Colors.grey,
),
),
const SizedBox(height: 30),
// Dashboard Content
const Expanded(
child: Center(
child: Text(
'Halaman Dashboard',
style: TextStyle(
fontSize: 20,
fontWeight: FontWeight.bold,
),
),
),
),
],
),
),
),
);
}
}