buildMediaContent method

Widget buildMediaContent(
  1. BuildContext context,
  2. Rx<Post> postInfo,
  3. double availableWidth
)

Implementation

Widget buildMediaContent(
  BuildContext context,
  Rx<Post> postInfo,
  double availableWidth,
) {
  Widget mediayerlesim = const Row();

  List<Row> mediaItems = [];

  List<Widget> mediarow1 = [];
  List<Widget> mediarow2 = [];
  for (int i = 0; i < postInfo.value.media.length; i++) {
    if (i > 3) {
      continue;
    }

    if (postInfo.value.media[i].mediaType == MediaType.video ||
        postInfo.value.media[i].mediaURL.normalURL.value.endsWith(".mp4")) {
      mediarow1.clear();
      mediarow1.add(
        mediaSablon(
          context,
          indexlength: postInfo.value.media.length,
          postInfo,
          postInfo.value.media[i].mediaURL.normalURL.value,
          isvideo: true,
        ),
      );
      break;
    }

    BoxFit mediadirection = BoxFit.cover;
    if (postInfo.value.media[i].mediaDirection.toString() == "yatay" &&
        postInfo.value.media.length == 1) {
      mediadirection = BoxFit.contain;
    }

    double mediawidth = availableWidth;
    double mediaheight = ARMOYU.screenHeight;

    if (postInfo.value.media.length == 1) {
      mediawidth = mediawidth / 1;

      mediaheight = mediaheight / 2;
    } else if (postInfo.value.media.length == 2) {
      mediawidth = mediawidth / 2;
      mediaheight = mediaheight / 4;
    } else if (postInfo.value.media.length == 3) {
      if (i == 0) {
        mediawidth = mediawidth / 1;
        mediaheight = mediaheight / 2.5;
      } else {
        mediawidth = mediawidth / 2;
        mediaheight = mediaheight / 4;
      }
    } else if (postInfo.value.media.length >= 4) {
      mediawidth = mediawidth / 2;
      mediaheight = mediaheight / 4;
    }

    GestureDetector aa = GestureDetector(
      onTap: () {
        Get.dialog(
          PhotoviewerView(
            service: service,
            media: postInfo.value.media
                .map(
                  (e) => Media(
                    mediaID: e.mediaID,
                    ownerID: e.ownerID,
                    owneravatar: e.owneravatar,
                    ownerusername: e.ownerusername,
                    mediaType: MediaType.image,
                    mediaURL: MediaURL(
                      bigURL: Rx(e.mediaURL.bigURL.value),
                      normalURL: Rx(e.mediaURL.normalURL.value),
                      minURL: Rx(e.mediaURL.minURL.value),
                    ),
                  ),
                )
                .toList(),
            initialIndex: i,
          ),
          barrierDismissible: true,
        ).whenComplete(() {
          log('Photo viewer dialog closed.');
        });
      },
      child: mediaSablon(
        context,
        postInfo,
        indexlength: postInfo.value.media.length,
        postInfo.value.media[i].mediaURL.normalURL.value,
        width: mediawidth,
        height: mediaheight,
        fit: mediadirection,
        islastmedia: i == 3,
      ),
    );

    if (postInfo.value.media.length == 3) {
      if (i == 0) {
        mediarow1.add(aa);
      } else {
        mediarow2.add(aa);
      }
    } else if (postInfo.value.media.length >= 4) {
      if (i == 0 || i == 1) {
        mediarow1.add(aa);
      } else {
        mediarow2.add(aa);
      }
    } else {
      mediarow1.add(aa);
    }
  }

  mediaItems.add(Row(
    mainAxisAlignment: MainAxisAlignment.center,
    children: mediarow1,
  ));
  mediaItems.add(Row(
    mainAxisAlignment: MainAxisAlignment.center,
    children: mediarow2,
  ));
  /////////////////////////////////////////////////

  /////////////////////////////////////////////////
  mediayerlesim = Column(
    mainAxisAlignment: MainAxisAlignment.center,
    children: mediaItems,
  );
  return mediayerlesim;
}