123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- import 'dart:math';
- import 'package:cached_network_image/cached_network_image.dart';
- import 'package:flutter/material.dart';
- import 'package:hooks_riverpod/hooks_riverpod.dart';
- import 'package:immich_mobile/shared/models/store.dart';
- import 'package:immich_mobile/shared/models/user.dart';
- import 'package:immich_mobile/shared/ui/transparent_image.dart';
- // ignore: must_be_immutable
- class UserCircleAvatar extends ConsumerWidget {
- final User user;
- double radius;
- double size;
- bool useRandomBackgroundColor;
- UserCircleAvatar({
- super.key,
- this.radius = 22,
- this.size = 44,
- this.useRandomBackgroundColor = false,
- required this.user,
- });
- @override
- Widget build(BuildContext context, WidgetRef ref) {
- final randomColors = [
- Colors.red[200],
- Colors.blue[200],
- Colors.green[200],
- Colors.yellow[200],
- Colors.purple[200],
- Colors.orange[200],
- Colors.pink[200],
- Colors.teal[200],
- Colors.indigo[200],
- Colors.cyan[200],
- Colors.brown[200],
- ];
- final profileImageUrl =
- '${Store.get(StoreKey.serverEndpoint)}/user/profile-image/${user.id}?d=${Random().nextInt(1024)}';
- return CircleAvatar(
- backgroundColor: useRandomBackgroundColor
- ? randomColors[Random().nextInt(randomColors.length)]
- : Theme.of(context).primaryColor,
- radius: radius,
- child: user.profileImagePath == ""
- ? Text(
- user.firstName[0].toUpperCase(),
- style: const TextStyle(
- fontWeight: FontWeight.bold,
- color: Colors.black,
- ),
- )
- : ClipRRect(
- borderRadius: BorderRadius.circular(50),
- child: CachedNetworkImage(
- fit: BoxFit.cover,
- cacheKey: user.profileImagePath,
- width: size,
- height: size,
- placeholder: (_, __) => Image.memory(kTransparentImage),
- imageUrl: profileImageUrl,
- httpHeaders: {
- "Authorization": "Bearer ${Store.get(StoreKey.accessToken)}",
- },
- fadeInDuration: const Duration(milliseconds: 300),
- errorWidget: (context, error, stackTrace) =>
- Image.memory(kTransparentImage),
- ),
- ),
- );
- }
- }
|