danial72
@danial72
flutter dart.

Как подсчитать количество символов для вывода на изображение?

Есть большая строка. Очень-очень большая строка. Примерно 100к символов. Нужно организовать постраничный и построчный вывод этой строки. Возникает вопрос : как подсчитать максимальное количество символов в строке, если мы точно не знаем ни ширину одного символа(каждый символ разной ширины) ни ширину экрана на вывод (все устройства разные) ? Есть ли какие-то готовые алгоритмы ?
  • Вопрос задан
  • 650 просмотров
Пригласить эксперта
Ответы на вопрос 1
@KnightForce
Можно пререндерить этот текст.
Но предварительно разбей на небольшие куски, иначе могут быть косяки.
А потому смотри, сколько влезло, подбирай размеры.

final TextPainter textPainter = TextPainter(
        text: TextSpan(text: text, style: style), maxLines: 1, textDirection: TextDirection.ltr)
      ..layout(minWidth: 0, maxWidth: double.infinity);
    return textPainter.size;


1) Возьми 1-ые 100 символов.
2) Сравни размер части текста с размерами экрана. Если еще влезает - еще бери.
3) Вычти из остального текста столько символов, сколько в итоге было в той части текста
6) Отрендери.
7) Повторяй так пока не выведешь весь текст.
8) Либо все делай через Fluture. Либо создай изолят, скорми ему текст, а он тебе пусть по требованию или периодически отдает куски текста. При его инициализации передай ему размер экрана или того виджета в котором будешь выводить текст. Если размеры хардкорные - тут все просто, иначе xthtp double width = (context.findRenderObject() as RenderBox).size.width
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы