closestVisibleWidgetIds method
Implementation
List<String> closestVisibleWidgetIds(String target, {int limit = 5}) {
final targetTokens = _idTokens(target);
if (targetTokens.isEmpty) return const [];
final scored = <({String id, int score})>[];
for (final id in _visibleWidgetIds()) {
if (id == target) continue;
final candidateTokens = _idTokens(id);
var score = 0;
for (final token in targetTokens) {
if (candidateTokens.contains(token)) {
score += 3;
} else if (candidateTokens.any(
(candidate) =>
candidate.startsWith(token) || token.startsWith(candidate),
)) {
score += 1;
}
}
if (score > 0) scored.add((id: id, score: score));
}
scored.sort((a, b) {
final score = b.score.compareTo(a.score);
if (score != 0) return score;
return a.id.compareTo(b.id);
});
return scored.take(limit).map((match) => match.id).toList();
}