convertGradient function
Implementation
LinearGradient convertGradient(String gradient) {
Color parseRGB(String color) {
if (color.contains("rgba")) {
List<String> values = color
.substring(color.indexOf("(") + 1, color.indexOf(")"))
.split(",")
.toList();
String hex = "${values[0]}${values[1]}${values[2]}";
return Color(int.parse("${values[3].padLeft(2, "0")}" + hex, radix: 16));
} else if (color.contains("#")) {
return Color(int.tryParse(color.substring(1), radix: 16)! + 0xFF000000);
} else {
return Colors.blueAccent;
}
}
List<String> splitGradient() {
List parsed = gradient.split(", ")
..where((element) => element.contains("rgba") || element.contains("#"))
.toList();
List<String> colors = [];
for (String color in parsed as Iterable<String>) {
if (color.contains("rgba")) {
// print(color.substring(color.indexOf(RegExp("\\d+(?:\\.\\d+)?%")),color.indexOf("%")));
colors.add(
color.substring(color.indexOf("rgba"), color.indexOf(")") + 1));
} else if (color.contains("#")) {
colors.add(
color.substring(color.indexOf("#") + 1, color.lastIndexOf(" ")));
}
}
return colors;
}
if (gradient.contains("linear-gradient")) {
return LinearGradient(
colors: [for (var color in splitGradient()) parseRGB(color)],
);
} else {
print("Invalid Gradient Data");
return LinearGradient(colors: []);
}
}