convertGradient function

LinearGradient convertGradient(
  1. String gradient
)

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: []);
  }
}