buildResponsiveGridView static method

dynamic buildResponsiveGridView(
  1. dynamic context, {
  2. required List<Widget> children,
  3. int count = 3,
  4. int? mobileCount = 1,
  5. int? tabletCount = 2,
  6. int? desktopCount,
  7. double? aspectRatio,
  8. Axis scrollDirection = Axis.vertical,
  9. String type = "count",
})

Implementation

static buildResponsiveGridView(
  context, {
  required final List<Widget> children,
  int count = 3,
  final int? mobileCount = 1,
  final int? tabletCount = 2,
  final int? desktopCount,
  final double? aspectRatio,
  final Axis scrollDirection = Axis.vertical,
  final String type = "count",
}) {
  if ("count" == type) {
    if (MediaQuery.of(context).size.width < tabletWidth) {
      count = mobileCount ?? count;
    } else if (MediaQuery.of(context).size.width < desktopWidth) {
      count = tabletCount ?? count;
    } else {
      count = desktopCount ?? count;
    }
    return GridView.count(
        crossAxisCount: count,
        childAspectRatio:
            aspectRatio ?? MediaQuery.of(context).size.height / 400,
        shrinkWrap: true,
        scrollDirection: scrollDirection,
        children: children);
  } else if ("extent" == type) {
    double maxWidth = 0;
    for (Widget item in children) {
      maxWidth = math.max(calculateContentSize(item).width, maxWidth);
    }
    return GridView.extent(
      maxCrossAxisExtent: maxWidth,
      shrinkWrap: true,
      children: children,
    );
  } else {
    throw AppException(
        name: "InvalidGridViewException",
        message: "Invalid GridView",
        description:
            "Gridview.$type cannot be rendered. Implementation required");
  }
}