convertInsert method

String? convertInsert(
  1. String text
)

Implementation

String? convertInsert(String text) {
  if (text == '\n') {
    final layoutText = layoutTextConverter.layoutText;
    if (layoutText.isNotEmpty) {
      layoutTextConverter.confirmWord(layoutText);
      _showOrRefresh();
      return layoutText;
    } else {
      return text;
    }
  }
  final insertText = _selectWordFromSuggestionsIfNeeded(text);
  if (insertText != text) {
    layoutTextConverter.confirmWord('$insertText ');
    _showOrRefresh();
    return insertText;
  }
  final nextPageSuggestion = text == '=';
  final previousPageSuggestion = text == '-';
  if (nextPageSuggestion || previousPageSuggestion) {
    final suggestionWords = layoutTextConverter.suggestionWords;
    if (suggestionWords.isEmpty) {
      return text;
    }
    final page = _currentPage;
    final nextPage = page + 1;
    final previousPage = page - 1;
    final maxPage = (suggestionWords.length / 10).ceil() - 1;
    final nextPageIndex = nextPage > maxPage ? 0 : nextPage;
    final previousPageIndex = previousPage < 0 ? maxPage : previousPage;
    _currentPage = nextPageSuggestion ? nextPageIndex : previousPageIndex;
    _showOrRefresh();
    return null;
  }
  final latin = RegExp(r'[a-zA-Z]').matchAsPrefix(text) != null;
  if (latin) {
    layoutTextConverter.appendLayoutText(text);
    _showOrRefresh();
    return null;
  } else {
    // Here the text is a Mongolian punctuation.
    layoutTextConverter.confirmWord(text);
    _showOrRefresh();
    if (text == ' ') {
      return ' ';
    }
    return '$text ';
  }
}