Как справиться с выбором текста?

Мне нужно отобразить стилизованный текст для чтения и некоторые действия. Пользователь должен иметь возможность выбрать фрагмент текста и пометить его цветом, сохранить его или развернуть (показать дополнительную информацию, например, перевод на другой язык).

Я могу отображать текст с помощью виджета RichText.

1) Как сделать его доступным и как/где добавить onTextSelected прослушиватель? Существует класс TextSelection, но я не вижу, как/где он используется.

2) Что является самым простым способом расширения текста? Я могу перезагрузить полный текст (с добавленными изменениями) и полностью обновить виджет, но это приведет к прокрутке вверху текста, и я думаю, что должен быть лучший подход.

Ответ 1

В Flutter достигнут определенный прогресс в обеспечении возможности выделения текста. Единственное работающее решение на данный момент - это использование RenderEditable с подавленными вызовами клавиатуры и удаленным курсором.

Посмотрите плагин flutter_selectable_text для выбора текста.

Чтобы также прослушивать события выбора - рассмотрите возможность использования плагина flutter_selectext, который также поддерживает форматированный текст (TextSpan).


Однако я бы порекомендовал дождаться официальной реализации, которая должна прибыть в конце мая 2019 года.

Ответ 2

Используйте GestureDetector из вашего текстового представления. Например

GestureDetector(
          onTap: (){},
          child: Text(
            'Your text',
           style: TextStyle(
                    color: Colors.green,
                  ),
          ),
        ),

А что касается остальной части вопроса, я не понимаю,