getSuggestions method

  1. @override
Future<List<CompletionSuggestion>> getSuggestions(
  1. String query,
  2. SuggestionContext context
)
override

Implementation

@override
Future<List<CompletionSuggestion>> getSuggestions(
  String query,
  SuggestionContext context,
) async {
  final search = query.startsWith('>')
      ? query.substring(1).trim().toLowerCase()
      : query.substring(7).trim().toLowerCase();

  return _snippets
      .where(
        (s) =>
            search.isEmpty ||
            _fuzzyMatch(s.id, search) ||
            _fuzzyMatch(s.title, search),
      )
      .map(
        (s) => CompletionSuggestion(
          value: s.template,
          displayText: s.title,
          description: s.template,
          type: SuggestionType.snippet,
          icon: 'snippet',
          score: _fuzzyScore(s.title, search),
          insertText: s.template,
        ),
      )
      .toList()
    ..sort((a, b) => b.score.compareTo(a.score));
}