analyzeLaunchFailure function
Implementation
LaunchFailureAnalysis analyzeLaunchFailure(
String output, {
int maxContextLines = 15,
}) {
final lines = const LineSplitter().convert(output);
final signalLineIndexes = _findSignalLineIndexes(lines);
final primaryIndex = signalLineIndexes.isEmpty ? _findBestFallbackLine(lines) : signalLineIndexes.first;
final category = _classifyCategory(lines, signalLineIndexes);
final resolvedHint = _resolveRemediationHint(
lines,
category.category,
category.remediationHint,
);
final rootSource = primaryIndex == -1 ? 'flutter process exited unexpectedly' : _cleanLine(lines[primaryIndex]);
final categoryLabel = _categoryLabel(category.category);
final rootCause = _buildRootCause(
lines,
primaryIndex,
category.category,
categoryLabel,
rootSource,
);
final contextIndexes = signalLineIndexes.isEmpty && primaryIndex != -1 ? <int>[primaryIndex] : signalLineIndexes;
return (
category: category.category,
rootCause: rootCause,
contextLines: _buildContextLines(
lines,
contextIndexes,
maxContextLines: maxContextLines,
),
remediationHint: resolvedHint,
);
}