Files
penyaluran_app/lib/app/modules/about/views/about_view.dart
Khafidh Fuadi 5aaeb58d2b h-1 lebaran
2025-03-30 14:45:16 +07:00

455 lines
14 KiB
Dart

import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:penyaluran_app/app/theme/app_theme.dart';
class AboutView extends StatelessWidget {
const AboutView({super.key});
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('Tentang Kami'),
centerTitle: true,
elevation: 0,
),
body: SingleChildScrollView(
child: Column(
children: [
// Header dengan logo dan nama brand
Container(
width: double.infinity,
decoration: BoxDecoration(
gradient: AppTheme.primaryGradient,
borderRadius: const BorderRadius.only(
bottomLeft: Radius.circular(30),
bottomRight: Radius.circular(30),
),
),
padding: const EdgeInsets.fromLTRB(20, 20, 20, 40),
child: Column(
children: [
Container(
width: 120,
height: 120,
decoration: BoxDecoration(
color: Colors.white,
shape: BoxShape.circle,
),
child: Center(
child: Image.asset(
'assets/images/logo-disalurkita.png',
width: 100,
height: 100,
),
),
),
const SizedBox(height: 20),
const Text(
'DisalurKita',
style: TextStyle(
fontSize: 28,
fontWeight: FontWeight.bold,
color: Colors.white,
),
),
const SizedBox(height: 8),
const Text(
'Salurkan dengan Pasti, Pantau dengan Bukti',
style: TextStyle(
fontSize: 16,
color: Colors.white,
fontWeight: FontWeight.w500,
),
),
const SizedBox(height: 20),
_buildVersionInfo(),
],
),
),
// Konten utama
Padding(
padding: const EdgeInsets.all(20),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
_buildSection(
icon: Icons.info_outline,
title: 'Tentang DisalurKita',
content:
'DisalurKita adalah platform penyaluran bantuan digital yang mengedepankan transparansi, akuntabilitas, dan kemudahan pengelolaan bantuan. Aplikasi ini memudahkan koordinasi antara petugas desa, donatur, dan warga dalam proses penyaluran bantuan sosial.',
),
_buildSection(
icon: Icons.visibility_outlined,
title: 'Visi Kami',
content:
'Menjadi platform terdepan dalam penyaluran bantuan sosial yang transparan, akuntabel, dan berdampak nyata bagi masyarakat Indonesia.',
),
_buildSection(
icon: Icons.location_on_outlined,
title: 'Misi Kami',
content:
'• Memastikan setiap bantuan diterima oleh yang berhak\n• Meningkatkan transparansi dalam proses penyaluran\n• Memberikan kemudahan akses informasi bagi semua pihak\n• Membangun kepercayaan antara donatur dan penerima bantuan',
),
_buildSection(
icon: Icons.star_outline,
title: 'Nilai-nilai Kami',
content:
'• Transparansi: Keterbukaan dalam setiap proses\n• Akuntabilitas: Pertanggungjawaban yang jelas\n• Inklusivitas: Melibatkan semua pihak\n• Efisiensi: Penyaluran bantuan tepat sasaran\n• Inovasi: Terus berinovasi untuk solusi terbaik',
),
_buildSection(
icon: Icons.people_outline,
title: 'Tim Kami',
content:
'DisalurKita dikembangkan oleh tim yang berdedikasi untuk menciptakan solusi inovatif dalam penyaluran bantuan sosial di Indonesia. Tim kami terdiri dari para profesional di bidang teknologi dan pengembangan sosial.',
),
// Layanan
_buildTeamSection(),
// Hubungi Kami
_buildContactSection(),
],
),
),
],
),
),
);
}
Widget _buildVersionInfo() {
return Container(
padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 8),
decoration: BoxDecoration(
color: Colors.white.withOpacity(0.2),
borderRadius: BorderRadius.circular(20),
),
child: const Text(
'Versi 1.0.0',
style: TextStyle(
color: Colors.white,
fontWeight: FontWeight.w500,
),
),
);
}
Widget _buildSection({
required IconData icon,
required String title,
required String content,
}) {
return Padding(
padding: const EdgeInsets.only(bottom: 24),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
children: [
Container(
padding: const EdgeInsets.all(8),
decoration: BoxDecoration(
color: AppTheme.primaryColor.withOpacity(0.1),
borderRadius: BorderRadius.circular(10),
),
child: Icon(
icon,
color: AppTheme.primaryColor,
size: 24,
),
),
const SizedBox(width: 12),
Text(
title,
style: const TextStyle(
fontSize: 18,
fontWeight: FontWeight.bold,
color: AppTheme.primaryColor,
),
),
],
),
const SizedBox(height: 12),
Text(
content,
style: TextStyle(
fontSize: 15,
color: Colors.grey[700],
height: 1.5,
),
),
],
),
);
}
Widget _buildTeamSection() {
return Padding(
padding: const EdgeInsets.only(bottom: 24),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
children: [
Container(
padding: const EdgeInsets.all(8),
decoration: BoxDecoration(
color: AppTheme.primaryColor.withOpacity(0.1),
borderRadius: BorderRadius.circular(10),
),
child: Icon(
Icons.settings_outlined,
color: AppTheme.primaryColor,
size: 24,
),
),
const SizedBox(width: 12),
const Text(
'Layanan Kami',
style: TextStyle(
fontSize: 18,
fontWeight: FontWeight.bold,
color: AppTheme.primaryColor,
),
),
],
),
const SizedBox(height: 16),
// Layanan Grid
GridView.count(
crossAxisCount: 3,
shrinkWrap: true,
physics: const NeverScrollableScrollPhysics(),
crossAxisSpacing: 16,
mainAxisSpacing: 16,
childAspectRatio: 0.8,
children: [
_buildServiceItem(
icon: Icons.volunteer_activism_outlined,
title: 'Penitipan Bantuan',
),
_buildServiceItem(
icon: Icons.inventory_2_outlined,
title: 'Pengelolaan Stok',
),
_buildServiceItem(
icon: Icons.local_shipping_outlined,
title: 'Penyaluran Bantuan',
),
_buildServiceItem(
icon: Icons.people_outline,
title: 'Manajemen Penerima',
),
_buildServiceItem(
icon: Icons.assignment_outlined,
title: 'Laporan Transparan',
),
_buildServiceItem(
icon: Icons.campaign_outlined,
title: 'Pengaduan',
),
],
),
],
),
);
}
Widget _buildServiceItem({
required IconData icon,
required String title,
}) {
return Container(
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(12),
boxShadow: [
BoxShadow(
color: Colors.grey.withOpacity(0.1),
spreadRadius: 1,
blurRadius: 5,
offset: const Offset(0, 2),
),
],
),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Container(
padding: const EdgeInsets.all(12),
decoration: BoxDecoration(
color: AppTheme.primaryColor.withOpacity(0.1),
shape: BoxShape.circle,
),
child: Icon(
icon,
color: AppTheme.primaryColor,
size: 28,
),
),
const SizedBox(height: 8),
Padding(
padding: const EdgeInsets.symmetric(horizontal: 8),
child: Text(
title,
style: const TextStyle(
fontSize: 12,
fontWeight: FontWeight.w500,
),
textAlign: TextAlign.center,
maxLines: 2,
overflow: TextOverflow.ellipsis,
),
),
],
),
);
}
Widget _buildContactSection() {
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
children: [
Container(
padding: const EdgeInsets.all(8),
decoration: BoxDecoration(
color: AppTheme.primaryColor.withOpacity(0.1),
borderRadius: BorderRadius.circular(10),
),
child: Icon(
Icons.contact_mail_outlined,
color: AppTheme.primaryColor,
size: 24,
),
),
const SizedBox(width: 12),
const Text(
'Hubungi Kami',
style: TextStyle(
fontSize: 18,
fontWeight: FontWeight.bold,
color: AppTheme.primaryColor,
),
),
],
),
const SizedBox(height: 16),
Container(
width: double.infinity,
padding: const EdgeInsets.all(16),
decoration: BoxDecoration(
gradient: LinearGradient(
colors: [Colors.blue.shade50, Colors.white],
begin: Alignment.topLeft,
end: Alignment.bottomRight,
),
borderRadius: BorderRadius.circular(16),
boxShadow: [
BoxShadow(
color: Colors.blue.withOpacity(0.1),
spreadRadius: 1,
blurRadius: 8,
offset: const Offset(0, 2),
),
],
),
child: Column(
children: [
_buildContactItem(
icon: Icons.email_outlined,
title: 'Email',
content: 'info@disalurkita.id',
),
const Divider(height: 24),
_buildContactItem(
icon: Icons.phone_outlined,
title: 'Telepon',
content: '+62 8123 4567 890',
),
const Divider(height: 24),
_buildContactItem(
icon: Icons.location_on_outlined,
title: 'Alamat',
content: 'Jl. Transparansi No. 123, Jakarta Pusat, Indonesia',
),
],
),
),
const SizedBox(height: 20),
// Footer
Center(
child: Text(
'© ${DateTime.now().year} DisalurKita. Seluruh hak cipta dilindungi.',
style: TextStyle(
fontSize: 12,
color: Colors.grey,
),
textAlign: TextAlign.center,
),
),
const SizedBox(height: 20),
],
);
}
Widget _buildContactItem({
required IconData icon,
required String title,
required String content,
}) {
return Row(
children: [
Container(
padding: const EdgeInsets.all(10),
decoration: BoxDecoration(
color: AppTheme.primaryColor.withOpacity(0.1),
shape: BoxShape.circle,
),
child: Icon(
icon,
color: AppTheme.primaryColor,
size: 20,
),
),
const SizedBox(width: 16),
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
title,
style: TextStyle(
fontSize: 14,
fontWeight: FontWeight.bold,
color: Colors.grey[800],
),
),
const SizedBox(height: 4),
Text(
content,
style: TextStyle(
fontSize: 14,
color: Colors.grey[600],
),
overflow: TextOverflow.ellipsis,
maxLines: 2,
),
],
),
),
],
);
}
}