import 'package:flutter/material.dart'; import 'package:photo_gallery/photo_gallery.dart'; import 'package:transparent_image/transparent_image.dart'; import '/trash/viewer_page.dart'; class AlbumPage extends StatefulWidget { final Album album; AlbumPage(Album album) : album = album; @override State createState() => AlbumPageState(); } class AlbumPageState extends State { List? _media; @override void initState() { super.initState(); initAsync(); } void initAsync() async { MediaPage mediaPage = await widget.album.listMedia(); setState(() { _media = mediaPage.items; }); } @override Widget build(BuildContext context) { return MaterialApp( home: Scaffold( appBar: AppBar( leading: IconButton( icon: const Icon(Icons.arrow_back_ios), onPressed: () => Navigator.of(context).pop(), ), title: Text(widget.album.name ?? "Unnamed Album"), ), body: GridView.count( crossAxisCount: 4, mainAxisSpacing: 1.0, crossAxisSpacing: 1.0, children: [ ...?_media?.map( (medium) => GestureDetector( onTap: () => Navigator.of(context).push(MaterialPageRoute( builder: (context) => ViewerPage(medium))), child: Container( color: Colors.grey[300], child: FadeInImage( fit: BoxFit.cover, placeholder: MemoryImage(kTransparentImage), image: ThumbnailProvider( mediumId: medium.id, mediumType: medium.mediumType, highQuality: true, ), ), ), ), ), ], ), ), ); } }