- 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();
- }
- }
|