import 'package:flutter/material.dart';
|
|
|
|
enum AvatarTypes {
|
|
initials,
|
|
icon,
|
|
image,
|
|
}
|
|
|
|
class CustomCircleAvatar extends StatefulWidget {
|
|
final String? initials;
|
|
final Icon? icon;
|
|
final String? imagePath;
|
|
final double radius;
|
|
|
|
const CustomCircleAvatar({
|
|
Key? key,
|
|
this.initials,
|
|
this.icon,
|
|
this.imagePath,
|
|
this.radius = 20,
|
|
}) : super(key: key);
|
|
|
|
@override
|
|
_CustomCircleAvatarState createState() => _CustomCircleAvatarState();
|
|
}
|
|
|
|
class _CustomCircleAvatarState extends State<CustomCircleAvatar>{
|
|
AvatarTypes type = AvatarTypes.image;
|
|
|
|
@override
|
|
void initState() {
|
|
super.initState();
|
|
|
|
if (widget.imagePath != null) {
|
|
type = AvatarTypes.image;
|
|
return;
|
|
}
|
|
|
|
if (widget.icon != null) {
|
|
type = AvatarTypes.icon;
|
|
return;
|
|
}
|
|
|
|
if (widget.initials != null) {
|
|
type = AvatarTypes.initials;
|
|
return;
|
|
}
|
|
|
|
throw ArgumentError('Invalid arguments passed to CustomCircleAvatar');
|
|
}
|
|
|
|
Widget avatar() {
|
|
if (type == AvatarTypes.initials) {
|
|
return CircleAvatar(
|
|
backgroundColor: Colors.grey[300],
|
|
child: Text(widget.initials!),
|
|
radius: widget.radius,
|
|
);
|
|
}
|
|
|
|
if (type == AvatarTypes.icon) {
|
|
return CircleAvatar(
|
|
backgroundColor: Colors.grey[300],
|
|
child: widget.icon,
|
|
radius: widget.radius,
|
|
);
|
|
}
|
|
|
|
return CircleAvatar(
|
|
backgroundImage: AssetImage(widget.imagePath!),
|
|
radius: widget.radius,
|
|
);
|
|
}
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return avatar();
|
|
}
|
|
}
|