summaryrefslogtreecommitdiff
path: root/lib/widgets/popular_item.dart
blob: 1cc08bd87a4b47d70f2d070a275efae065f0034a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
import 'package:flutter/material.dart';
import 'package:pmsna1/models/popular.dart';

class PopularItem extends StatelessWidget {
  final Popular popular;
  final void Function(bool favorited) onFavorited;
  final void Function() onPressed;

  const PopularItem(
    this.popular, {
    super.key,
    required this.onFavorited,
    required this.onPressed,
  });

  @override
  Widget build(BuildContext context) {
    return Card(
      semanticContainer: true,
      clipBehavior: Clip.antiAliasWithSaveLayer,
      child: InkWell(
        onTap: onPressed,
        child: Stack(
          children: [
            Hero(
              tag: popular.posterPath!,
              child: FadeInImage(
                placeholder: const AssetImage('assets/loading.gif'),
                image: NetworkImage(
                  'https://image.tmdb.org/t/p/w500/${popular.posterPath!}',
                ),
              ),
            ),
            popular.hasFavorite
                ? IconButton.filled(
                    icon: Icon(
                      Icons.favorite,
                      color: Theme.of(context).colorScheme.onPrimary,
                    ),
                    onPressed: () => onFavorited(!popular.hasFavorite),
                  )
                : IconButton.filled(
                    icon: Icon(
                      Icons.favorite_outline,
                      color: Theme.of(context).colorScheme.onPrimary,
                    ),
                    onPressed: () => onFavorited(!popular.hasFavorite),
                  ),
          ],
        ),
      ),
    );
  }
}