import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:pshared/provider/account.dart'; import 'package:pweb/pages/settings/profile/account/avatar.dart'; import 'package:pweb/pages/settings/profile/account/locale.dart'; import 'package:pweb/pages/settings/profile/account/name/name.dart'; import 'package:pweb/pages/settings/profile/account/password/password.dart'; import 'package:pweb/generated/i18n/app_localizations.dart'; class ProfileSettingsPage extends StatelessWidget { const ProfileSettingsPage({super.key}); static const _cardPadding = EdgeInsets.symmetric(vertical: 32, horizontal: 16); static const _cardRadius = 16.0; static const _itemSpacing = 12.0; @override Widget build(BuildContext context) { final loc = AppLocalizations.of(context)!; final theme = Theme.of(context); final accountFirstName = context.select( (provider) => provider.account?.name, ); final accountLastName = context.select( (provider) => provider.account?.lastName, ); final accountAvatarUrl = context.select( (provider) => provider.account?.avatarUrl, ); return Align( alignment: Alignment.topCenter, child: Material( elevation: 4, borderRadius: BorderRadius.circular(_cardRadius), color: theme.colorScheme.onSecondary, child: Padding( padding: _cardPadding, child: Column( mainAxisSize: MainAxisSize.min, spacing: _itemSpacing, children: [ AvatarTile( avatarUrl: accountAvatarUrl, title: loc.avatar, description: loc.avatarHint, errorText: loc.avatarUpdateError, ), AccountName( firstName: accountFirstName ?? '', lastName: accountLastName ?? '', title: loc.accountName, hintText: loc.accountNameHint, lastNameHint: loc.lastName, errorText: loc.accountNameUpdateError, ), AccountPassword( title: loc.changePassword, successText: loc.changePasswordSuccess, errorText: loc.changePasswordError, oldPasswordLabel: loc.oldPassword, newPasswordLabel: loc.newPassword, confirmPasswordLabel: loc.confirmPassword, savePassword: loc.savePassword, ), LocalePicker( title: loc.language, ), ], ), ), ), ); } }