article_image.dart 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. import 'package:flutter/material.dart';
  2. import 'package:cached_network_image/cached_network_image.dart';
  3. class ArticleImage extends StatelessWidget {
  4. final int idArticolo;
  5. final String? codArticolo;
  6. final String? imageUrl;
  7. final double size;
  8. const ArticleImage({
  9. super.key,
  10. required this.idArticolo,
  11. this.codArticolo,
  12. this.imageUrl,
  13. this.size = 48,
  14. });
  15. @override
  16. Widget build(BuildContext context) {
  17. if (imageUrl != null && imageUrl!.isNotEmpty) {
  18. return ClipRRect(
  19. borderRadius: BorderRadius.circular(8),
  20. child: CachedNetworkImage(
  21. imageUrl: imageUrl!,
  22. width: size,
  23. height: size,
  24. fit: BoxFit.cover,
  25. placeholder: (_, __) => _placeholder(),
  26. errorWidget: (_, __, ___) => _placeholder(),
  27. ),
  28. );
  29. }
  30. return _placeholder();
  31. }
  32. Widget _placeholder() {
  33. return Container(
  34. width: size,
  35. height: size,
  36. decoration: BoxDecoration(
  37. color: Colors.grey.shade200,
  38. borderRadius: BorderRadius.circular(8),
  39. ),
  40. child: Icon(Icons.inventory_2_outlined, size: size * 0.5, color: Colors.grey.shade400),
  41. );
  42. }
  43. }