import 'package:cached_network_image/cached_network_image.dart';
import 'package:comunic/models/group.dart';
import 'package:flutter/material.dart';

/// Custom group icon
///
/// @author Pierre Hubert
class GroupIcon extends StatelessWidget {
  final Group group;
  final double width;

  const GroupIcon({
    Key key,
    @required this.group,
    this.width = 50,
  })  : assert(group != null),
        assert(width != null),
        super(key: key);

  @override
  Widget build(BuildContext context) {
    return Material(
      color: Colors.transparent,
      child: CachedNetworkImage(
        imageUrl: group.iconURL,
        width: width,
        height: width,
        placeholder: (c, s) => Container(
          color: Colors.grey,
          width: width,
          height: width,
          child: Padding(
            padding: const EdgeInsets.all(8.0),
            child: CircularProgressIndicator(
              strokeWidth: 4.0,
            ),
          ),
        ),
        errorWidget: (c, s, o) => Container(
          color: Colors.red,
          width: width,
          height: width,
          child: Icon(
            Icons.error,
            color: Colors.white,
          ),
        ),
      ),
    );
  }
}