fetchBreakingChanges method
Fetch all known Flutter breaking changes from the documentation index.
Returns a list of maps, each containing:
title— human-readable title of the breaking changeurl— relative path or full URL to the detail pageversion— Flutter version string where the change landed (if extractable from the surrounding heading)
Returns an empty list on failure.
Implementation
Future<List<Map<String, dynamic>>> fetchBreakingChanges() async {
final cacheKey = 'flutter_breaking_changes';
final cached = await _cache.get(cacheKey);
if (cached != null) {
final entries = cached['entries'] as List<dynamic>? ?? [];
return entries.cast<Map<String, dynamic>>();
}
// Try primary URL first, then the alternative layout.
String? markdown = await _fetchMarkdown(_breakingChangesUrl);
markdown ??= await _fetchMarkdown(_breakingChangesUrlAlt);
if (markdown == null) {
Logger.warn('Could not fetch Flutter breaking-changes index');
return [];
}
try {
final entries = _parseBreakingChangesIndex(markdown);
Logger.info('Parsed ${entries.length} Flutter breaking-change entries');
await _cache.set(
cacheKey,
{'entries': entries},
CacheManager.flutterDocsTtl,
);
return entries;
} catch (e, stack) {
Logger.error('Error parsing breaking-changes index', e, stack);
return [];
}
}