import 'dart:developer'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:injector/injector.dart'; import 'package:prosappco/blocs/setting_bloc/setting_bloc.dart'; import 'package:prosappco/screens/configuration/configuration_about_screen.dart'; const _kPrimary = Color(0xFF1565C0); class ConfigurationScreen extends StatelessWidget { const ConfigurationScreen({super.key}); @override Widget build(BuildContext context) { final settingBloc = Injector.appInstance.get(); return BlocProvider( create: (context) => settingBloc, child: BlocListener( listener: (context, state) { if (state is SettingLogoutSuccess) { Navigator.pop(context); } }, child: Scaffold( appBar: AppBar( title: const Text('Configuración'), backgroundColor: _kPrimary, foregroundColor: Colors.white, elevation: 0, ), body: ListView( children: [ const SizedBox(height: 8), _ConfigItem( icon: Icons.info_outline_rounded, label: 'Acerca de la aplicación', onTap: () => Navigator.push( context, CupertinoPageRoute( builder: (_) => const ConfigurationAboutScreen(), ), ), ), _ConfigItem( icon: Icons.logout_rounded, label: 'Cerrar sesión', onTap: () { try { settingBloc.add(SettingLogoutRequest()); } catch (e) { log('logout error: ${e.toString()}'); } }, ), const Divider(height: 1), _ConfigItem( icon: Icons.delete_outline_rounded, label: 'Eliminar cuenta', color: Theme.of(context).colorScheme.error, onTap: () {}, ), ], ), ), ), ); } } class _ConfigItem extends StatelessWidget { final IconData icon; final String label; final Color? color; final VoidCallback onTap; const _ConfigItem({ required this.icon, required this.label, required this.onTap, this.color, }); @override Widget build(BuildContext context) { final onSurface = Theme.of(context).colorScheme.onSurface; final c = color ?? onSurface; return ListTile( onTap: onTap, leading: Container( width: 36, height: 36, decoration: BoxDecoration( color: c.withOpacity(0.08), borderRadius: BorderRadius.circular(10), ), child: Icon(icon, color: c, size: 20), ), title: Text(label, style: TextStyle(color: c, fontWeight: FontWeight.w500)), trailing: color == null ? Icon(Icons.keyboard_arrow_right, color: onSurface.withOpacity(0.35)) : null, ); } }