getFormatedStringLinesFromStackTrace method
Implementation
List<String> getFormatedStringLinesFromStackTrace(
{required StackTrace stackTrace}) {
final lines = stackTrace.toString().split('\n');
final List<String> castedStack = [];
int cout = 0;
for (String line in lines) {
if (_discardDeviceStacktraceLine(line) ||
_discardWebStacktraceLine(line) ||
_discardBrowserStacktraceLine(line) ||
line.isEmpty) {
continue;
}
final cleanText = line
.replaceFirst(RegExp(r'#\d+\s+'), '')
.replaceAll(_devicePackageText, '');
final errorPlace = line.split(' ').last;
final bool hasTrace = _devicePackageText.hasMatch(errorPlace);
final castedText = '#$cout $cleanText';
castedStack.add(castedText);
if (hasTrace) {
castedStack.add(errorPlace);
}
cout++;
}
final List<String> acumulatorStackLines = [];
final List<String> choosedLines = castedStack.isEmpty ? lines : castedStack;
for (var line in choosedLines) {
if (line.contains('(file:')) {
final index = line.indexOf('(file:');
acumulatorStackLines.add(line.substring(0, index));
acumulatorStackLines.add(line.substring(index));
} else {
acumulatorStackLines.add(line);
}
}
return acumulatorStackLines;
}