TKK_E32231193/lib/screens/settings_screen.dart

133 lines
3.9 KiB
Dart

import 'package:flutter/material.dart';
import '../services/auth_service.dart';
import 'login_screen.dart';
class SettingsScreen extends StatelessWidget {
const SettingsScreen({super.key});
@override
Widget build(BuildContext context) {
final AuthService auth = AuthService();
return Scaffold(
backgroundColor: const Color(0xFFF2F4F7),
appBar: AppBar(
centerTitle: false,
titleSpacing: 20,
title: const Text(
"Pengaturan",
style: TextStyle(
color: Colors.black,
fontWeight: FontWeight.bold,
fontSize: 22,
),
),
elevation: 0,
backgroundColor: Colors.white,
foregroundColor: Colors.black,
),
body: Padding(
padding: const EdgeInsets.all(20),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Container(
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(20),
boxShadow: [
BoxShadow(
color: Colors.black.withOpacity(0.05),
blurRadius: 10,
offset: const Offset(0, 4),
)
],
),
child: ListTile(
contentPadding:
const EdgeInsets.symmetric(horizontal: 20, vertical: 5),
leading: const Icon(Icons.logout_rounded, color: Colors.red),
title: const Text(
"Keluar",
style: TextStyle(
fontWeight: FontWeight.bold,
color: Colors.red,
),
),
trailing: const Icon(
Icons.arrow_forward_ios_rounded,
size: 16,
color: Colors.grey,
),
onTap: () => _showLogoutDialog(context, auth),
),
),
],
),
),
);
}
void _showLogoutDialog(BuildContext context, AuthService auth) {
showDialog(
context: context,
barrierDismissible: false,
builder: (BuildContext dialogContext) {
return AlertDialog(
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(20),
),
title: const Text("Konfirmasi"),
content: const Text(
"Apakah Anda yakin ingin keluar dari aplikasi?",
),
actions: [
TextButton(
onPressed: () => Navigator.pop(dialogContext),
child: const Text(
"Batal",
style: TextStyle(color: Colors.grey),
),
),
TextButton(
onPressed: () async {
try {
await auth.logout();
if (!context.mounted) return;
Navigator.pop(dialogContext);
Navigator.pushAndRemoveUntil(
context,
MaterialPageRoute(
builder: (context) => const LoginScreen(),
),
(route) => false,
);
} catch (e) {
if (context.mounted) {
Navigator.pop(dialogContext);
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text("Gagal keluar: $e"),
),
);
}
}
},
child: const Text(
"Oke, Keluar",
style: TextStyle(
color: Colors.red,
fontWeight: FontWeight.bold,
),
),
),
],
);
},
);
}
}