-
-
Notifications
You must be signed in to change notification settings - Fork 47
/
size_utils.dart
74 lines (72 loc) · 2.47 KB
/
size_utils.dart
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
import 'package:flutter/material.dart';
import 'package:responsive_builder/responsive_builder.dart';
class SizeUtils {
static int getCrossAxisCountForGrids(
BuildContext context, {
int? forPortrait,
int? forLandscape,
bool itemIsSmall = false,
bool isOnMainPage = false,
}) {
final isPortrait = MediaQuery.of(context).orientation == Orientation.portrait;
final size = MediaQuery.of(context).size;
final deviceType = getDeviceType(size);
final refinedSize = getRefinedSize(size);
int crossAxisCount = 2;
switch (deviceType) {
case DeviceScreenType.mobile:
crossAxisCount = isPortrait ? forPortrait ?? 2 : forLandscape ?? 3;
break;
case DeviceScreenType.tablet:
switch (refinedSize) {
case RefinedSize.small:
crossAxisCount = isPortrait ? forPortrait ?? 3 : forLandscape ?? (isOnMainPage ? 4 : 5);
break;
case RefinedSize.normal:
case RefinedSize.large:
crossAxisCount = isPortrait ? forPortrait ?? 4 : forLandscape ?? (isOnMainPage ? 5 : 6);
break;
case RefinedSize.extraLarge:
crossAxisCount = isPortrait ? forPortrait ?? 5 : forLandscape ?? (isOnMainPage ? 6 : 7);
break;
}
break;
case DeviceScreenType.desktop:
switch (refinedSize) {
case RefinedSize.small:
crossAxisCount = isPortrait ? 2 : 3;
break;
case RefinedSize.normal:
crossAxisCount = isPortrait ? 3 : 5;
break;
case RefinedSize.large:
crossAxisCount = isPortrait ? 5 : 7;
break;
case RefinedSize.extraLarge:
crossAxisCount = isPortrait ? 7 : 9;
break;
}
break;
default:
break;
}
return itemIsSmall ? (crossAxisCount + (crossAxisCount * 0.3).round()) : crossAxisCount;
}
static double getSizeForCircleImages(BuildContext context, {double? defaultValue, bool smallImage = false}) {
final isPortrait = MediaQuery.of(context).orientation == Orientation.portrait;
final size = MediaQuery.of(context).size;
final deviceType = getDeviceType(size);
switch (deviceType) {
case DeviceScreenType.mobile:
return 35;
case DeviceScreenType.tablet:
case DeviceScreenType.desktop:
if (smallImage) {
return 40;
}
return isPortrait ? 50 : 70;
default:
return defaultValue ?? 35;
}
}
}