/// Profile tab: avatar, stats, and a shortcut to the add-item form. library; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import '../providers/item_provider.dart'; import '../providers/theme_provider.dart'; import '../utils/constants.dart'; import '../utils/helpers.dart'; import '../widgets/responsive_body.dart'; import 'add_item_screen.dart'; class ProfileScreen extends StatelessWidget { const ProfileScreen({super.key}); @override Widget build(BuildContext context) { final items = context.watch(); final themeController = context.watch(); final theme = Theme.of(context); final colors = theme.colorScheme; return Scaffold( appBar: AppBar(title: const Text('Profile')), body: ResponsiveBody( child: ListView( children: [ const SizedBox(height: 12), Center( child: CircleAvatar( radius: 44, backgroundColor: colors.primaryContainer, child: Icon( Icons.person, size: 44, color: colors.onPrimaryContainer, ), ), ), const SizedBox(height: 16), Text( 'Alex Rivera', textAlign: TextAlign.center, style: theme.textTheme.headlineMedium, ), const SizedBox(height: 4), Text( 'alex@example.com', textAlign: TextAlign.center, style: theme.textTheme.bodyMedium, ), const SizedBox(height: 24), Row( children: [ Expanded( child: _ProfileStat( label: 'Items', value: '${items.count}', ), ), const SizedBox(width: 12), Expanded( child: _ProfileStat( label: 'Theme', value: labelForThemeMode(themeController.themeMode), ), ), const SizedBox(width: 12), Expanded( child: _ProfileStat( label: 'Source', value: items.useRemoteData ? 'Remote' : 'Local', ), ), ], ), const SizedBox(height: 24), Card( child: Column( children: [ ListTile( leading: const Icon(Icons.add_box_outlined), title: const Text('Add a catalog item'), subtitle: const Text('Validated form with category picker'), trailing: const Icon(Icons.chevron_right), onTap: () { Navigator.of(context).push( MaterialPageRoute( builder: (_) => const AddItemScreen(), ), ); }, ), const Divider(height: 1), const ListTile( leading: Icon(Icons.info_outline), title: Text('About'), subtitle: Text('$kAppName ยท $kPackageName'), ), ], ), ), ], ), ), ); } } class _ProfileStat extends StatelessWidget { const _ProfileStat({required this.label, required this.value}); final String label; final String value; @override Widget build(BuildContext context) { final theme = Theme.of(context); return Container( padding: const EdgeInsets.symmetric(vertical: 16), decoration: BoxDecoration( color: theme.colorScheme.surfaceContainerLow, borderRadius: BorderRadius.circular(16), boxShadow: [ BoxShadow( color: theme.shadowColor.withValues(alpha: 0.06), blurRadius: 12, offset: const Offset(0, 4), ), ], ), child: Column( children: [ Text(value, style: theme.textTheme.titleLarge), const SizedBox(height: 4), Text(label, style: theme.textTheme.labelMedium), ], ), ); } }