visitElementAfter method

  1. @override
void visitElementAfter(
  1. Element element
)

Called when an Element has been reached, after its children have been visited.

Will not be called if visitElementBefore returns false.

Implementation

@override
void visitElementAfter(md.Element element) {
  switch (element.tag) {
    case 'h1':
    case 'h2':
    case 'h3':
    case 'h4':
    case 'h5':
    case 'h6':
    case 'blockquote':
      _exitBlock();
      break;
    case 'ul':
    case 'ol':
      _listCounters.removeLast();
      _listIsOrdered.removeLast();
      _exitBlock();
      break;
    case 'li':
      _ensureNewline();
      break;

    case 'p':
      _exitBlock();
      _ensureNewline();
      break;
    case 'strong':
      _inlineStack.removeLast();
      break;
    case 'em':
      _inlineStack.removeLast();
      break;
    case 'code':
      _inlineStack.removeLast();
      break;
    case 'a':
      _inlineStack.removeLast();
      _linkStack.removeLast();
      break;

    case 'table':
      _inTableCell = false;
      _renderTable();
      _tableHeaders.clear();
      _tableRows.clear();
      _currentRow.clear();
      break;

    case 'tr':
      if (_currentRow.isNotEmpty) {
        if (_inTableHead) {
          _tableHeaders.addAll(_currentRow);
        } else {
          _tableRows.add(List.from(_currentRow));
        }
        _currentRow.clear();
      }
      break;

    case 'th':
      _inTableCell = false;
      _currentRow.add(_captureCellContent(element));
      break;
    case 'td':
      _inTableCell = false;
      _currentRow.add(_captureCellContent(element));
      break;
  }
}