Usar el widget Hero con multiples widgets de origen

Para usar el widget hero con multiples elementos (listas) usar variables en en lugar de texto "hardcodeado".

Modelo a usar para almacenar la etiqueta de Hero

class Media {
  int id;
  String image;
  String name;
  Media(this.id, this.image, this.name);
}

Widget con lista de multiples elementos hero.

final List<Media> _items = [
  Media(1, "assets/poster1.jpg", "Blade Runner"),
  Media(2, "assets/poster2.jpg", "Avengers"),
];

/// ...

body: ListView(
  children: <Widget>[
    _listItem(context, _items[0]),
    _listItem(context, _items[1]),
  ],
);

Widget _listItem(BuildContext context, item) {

  /// ...

  leading: Hero(
    tag: item.id,
    child: Image.asset(item.image),
  ),

  /// ...

}

Widget vista de detalle de hero.

final Media media;

/// ...

body: Hero(
  tag: media.id,
  child: Image.asset(
    media.image,
    width: MediaQuery.of(context).size.width,
    fit: BoxFit.cover,
  ),
),