render method

  1. @override
String render(
  1. ListModel model,
  2. int index,
  3. ListItem item
)
override

Render the item at the given index.

Implementation

@override
String render(ListModel model, int index, ListItem item) {
  final selected = model.index == index;
  final value = item.filterValue();
  final matches = model.matchesForItem(index);

  String styledValue;
  if (matches != null && matches.isNotEmpty) {
    // Highlight matched characters
    final buffer = StringBuffer();
    for (var i = 0; i < value.length; i++) {
      if (matches.contains(i)) {
        buffer.write(matchedStyle.render(value[i]));
      } else {
        buffer.write(value[i]);
      }
    }
    styledValue = buffer.toString();
  } else {
    styledValue = value;
  }

  if (selected) {
    return selectedStyle.render('> $styledValue');
  }
  return normalStyle.render('  $styledValue');
}