columnWidthFromBreakPointTriggers static method
returns the width a column should be based on it's breakpoints ex: col-lg-6 would set width to 50% of container width when breakpoint is lg
Implementation
static double columnWidthFromBreakPointTriggers({
required double maxWidth,
required double screenWidth,
required List<String> breakPointTriggers,
}) {
// set values to unset
Map<String, double> map = <String, double>{
"": maxWidth,
"sm": -1,
"md": -1,
"lg": -1,
"xl": -1,
"xxl": -1,
};
// set explicit values
for (int i = 0; i < breakPointTriggers.length; i++) {
if (RegExp(r"^col$").firstMatch(breakPointTriggers[i]) != null) {
map[""] = (1 / 12) * maxWidth;
} else if (RegExp(r"^col-(([0-9])|([0-9][0-2]))$")
.firstMatch(breakPointTriggers[i]) !=
null) {
map[""] =
(_getSuffixNumbersValue(breakPointTriggers[i]) / 12) * maxWidth;
} else {
for (int r = 1; r < breakPointLabels.length; r++) {
if (RegExp("^col-${breakPointLabels[r]}-(([0-9])|([0-9][0-2]))\$")
.firstMatch(breakPointTriggers[i]) !=
null) {
map[breakPointLabels[r]] =
(_getSuffixNumbersValue(breakPointTriggers[i]) / 12) * maxWidth;
}
}
}
}
// set inferred values
for (int i = 1; i < breakPointLabels.length; i++) {
if (map[breakPointLabels[i]] == -1) {
map[breakPointLabels[i]] = map[breakPointLabels[i - 1]]!;
}
}
return valueBasedOnBreakPointFromDefinedWidth(width: screenWidth, map: map);
}