import 'package:flutter/material.dart'; import 'package:material_symbols_icons/symbols.dart'; import 'package:provider/provider.dart'; import 'package:styled_widget/styled_widget.dart'; import 'package:surface/providers/sn_network.dart'; import 'package:surface/widgets/universal_image.dart'; class AccountImage extends StatelessWidget { final String? content; final Color? backgroundColor; final Color? foregroundColor; final double? radius; final double? borderRadius; final Widget? fallbackWidget; final Widget? badge; const AccountImage({ super.key, required this.content, this.backgroundColor, this.foregroundColor, this.radius, this.borderRadius, this.fallbackWidget, this.badge, }); @override Widget build(BuildContext context) { final sn = context.read(); final url = sn.getAttachmentUrl(content ?? ''); return Stack( clipBehavior: Clip.none, children: [ SizedBox( width: (radius != null ? radius! : 20) * 2, height: (radius != null ? radius! : 20) * 2, child: ClipRRect( borderRadius: BorderRadius.circular(borderRadius ?? radius ?? 20), child: (content?.isEmpty ?? true) ? Container( color: backgroundColor ?? Theme.of(context).colorScheme.primaryContainer, child: (fallbackWidget ?? Icon( Symbols.account_circle, size: radius != null ? radius! * 1.2 : 24, color: foregroundColor, )) .center(), ) : AutoResizeUniversalImage( sn.getAttachmentUrl(url), key: Key('attachment-${content.hashCode}'), fit: BoxFit.cover, ), ), ), if (badge != null) Positioned( right: -4, bottom: -2, child: badge!, ), ], ); } }