upceToUpca method
Implementation
String upceToUpca(String data) {
final RegExp exp = RegExp(r"^\d{6,8}$");
final RegExpMatch? match = exp.firstMatch(data);
if (match == null) {
throw BarcodeException('Unable to convert "$data" to UPC A Barcode');
}
String first = "0";
String? checksum;
switch (data.length) {
case 8:
checksum = data[7];
first = data[0];
data = data.substring(1, 7);
break;
case 7:
first = data[0];
data = data.substring(1, 7);
break;
}
if (first != "0" && first != "1") {
throw BarcodeException('Unable to convert "$data" to UPC A Barcode');
}
final String d1 = data[0];
final String d2 = data[1];
final String d3 = data[2];
final String d4 = data[3];
final String d5 = data[4];
final String d6 = data[5];
String manufacturer;
String product;
switch (d6) {
case "0":
case "1":
case "2":
manufacturer = "$d1$d2${d6}00";
product = "00$d3$d4$d5";
break;
case "3":
manufacturer = "$d1$d2${d3}00";
product = "000$d4$d5";
break;
case "4":
manufacturer = "$d1$d2$d3${d4}0";
product = "0000$d5";
break;
default:
manufacturer = "$d1$d2$d3$d4$d5";
product = "0000$d6";
break;
}
data = first + manufacturer + product;
return data + (checksum ?? checkSumModulo10(data));
}