buildGallery method

Widget buildGallery(
  1. BuildContext context,
  2. CuratedList curatedList
)

Implementation

Widget buildGallery(BuildContext context, api.CuratedList curatedList) {
  List<Widget> children = [];

  List<api.Image?> images = [];
  for (var item in curatedList.items!) {
    images.add(item!.data);
  }

  for (var i = 0; i < curatedList.items!.length; i++) {
    var item = curatedList.items![i]!;
    children.add(Container(
      padding: const EdgeInsets.all(8),
      child: GestureDetector(
        onTap: () {
          var gallery = Gallery(
            title: curatedList.title,
            shareButtonTag: shareButtonTag,
            galleryItems: images,
            backgroundDecoration: const BoxDecoration(
              color: Colors.black,
            ),
            initialIndex: i,
            scrollDirection:
                verticalGallery ? Axis.vertical : Axis.horizontal,
          );

          if (isLargeFormatWeb(context)) {
            Navigator.push(
              context,
              PageRouteBuilder(
                transitionDuration: const Duration(seconds: 0),
                pageBuilder: (context, _, __) {
                  return gallery;
                },
              ),
            );
          } else {
            Navigator.push(
              context,
              MaterialPageRoute(
                builder: (context) {
                  return gallery;
                },
              ),
            );
          }
        },
        child: Hero(
          tag: item.data.id,
          child: Image.network(
            item.data.url,
            height: 100,
            fit: BoxFit.fitWidth,
          ),
        ),
      ),
    ));
  }

  return CustomScrollView(
    slivers: [
      SliverPadding(
        padding: const EdgeInsets.all(20),
        sliver: SliverGrid.count(
          crossAxisSpacing: 10,
          mainAxisSpacing: 10,
          crossAxisCount: 2,
          children: children,
        ),
      ),
    ],
  );
}