Fixes for Settings Page
This commit is contained in:
@@ -10,24 +10,49 @@ import 'package:pweb/generated/i18n/app_localizations.dart';
|
||||
|
||||
|
||||
class AccountAvatar extends StatelessWidget {
|
||||
const AccountAvatar({super.key});
|
||||
final double? size;
|
||||
final bool showHeader;
|
||||
final String? fallbackUrl;
|
||||
final AccountProvider? provider;
|
||||
|
||||
const AccountAvatar({
|
||||
super.key,
|
||||
this.size,
|
||||
this.showHeader = true,
|
||||
this.fallbackUrl,
|
||||
this.provider,
|
||||
});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final loc = AppLocalizations.of(context)!;
|
||||
if (provider != null) {
|
||||
return _buildAvatar(context, provider!);
|
||||
}
|
||||
|
||||
return Consumer<AccountProvider>(
|
||||
builder: (context, provider, _) => UserAccountsDrawerHeader(
|
||||
accountName: Text(provider.account?.name ?? loc.userNamePlaceholder),
|
||||
accountEmail: Text(provider.account?.login ?? loc.usernameHint),
|
||||
currentAccountPicture: CircleAvatar(
|
||||
backgroundImage: (provider.account?.avatarUrl?.isNotEmpty ?? false)
|
||||
? CachedNetworkImageProvider(provider.account!.avatarUrl!)
|
||||
: null,
|
||||
child: (provider.account?.avatarUrl?.isNotEmpty ?? false)
|
||||
? null
|
||||
: const Icon(Icons.account_circle, size: 50),
|
||||
),
|
||||
),
|
||||
builder: (context, provider, _) => _buildAvatar(context, provider),
|
||||
);
|
||||
}
|
||||
|
||||
Widget _buildAvatar(BuildContext context, AccountProvider provider) {
|
||||
final avatarUrl = (provider.account?.avatarUrl ?? fallbackUrl)?.trim();
|
||||
final hasAvatar = avatarUrl?.isNotEmpty == true;
|
||||
final radius = size != null ? size! / 2 : null;
|
||||
final double placeholderIconSize = size != null ? size! * 0.55 : 50;
|
||||
|
||||
final avatar = CircleAvatar(
|
||||
radius: radius,
|
||||
backgroundImage: hasAvatar ? CachedNetworkImageProvider(avatarUrl!) : null,
|
||||
child: hasAvatar ? null : Icon(Icons.account_circle, size: placeholderIconSize),
|
||||
);
|
||||
|
||||
if (!showHeader) return avatar;
|
||||
|
||||
final loc = AppLocalizations.of(context)!;
|
||||
return UserAccountsDrawerHeader(
|
||||
accountName: Text(provider.account?.describable.name ?? loc.userNamePlaceholder),
|
||||
accountEmail: Text(provider.account?.login ?? loc.usernameHint),
|
||||
currentAccountPicture: avatar,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user