GestureDetector в текстовом диапазоне без разрыва строки

Я пытаюсь установить GestureDetectors на отдельные фразы в текстовом блоке. Хотя это работает, я не хочу, чтобы GestureDetector создавал новую строку. То, что я хочу, больше похоже на текстовую ссылку в html. Что-то вроде следующего кода дает мне 3 отдельные строки, как мне получить одну строку?

    Text(
        'This ',
      ),
      GestureDetector(
        onTap: () {
          doSomething();
        },
        child: Text(
          'text ',
        ),
      ),
      Text(
        "should be in one line.",
      ),

Обновлено:

GestureDetector в текстовом диапазоне без разрыва строки

Row(
        children: <Widget>[
          Expanded(
            child: Column(
              children: <Widget>[
                Text("Short text"),
                GestureDetector(
                  child: Text(
                      "Very long text. Very long text. Very long text. Very long text. Very long text. Very long text. Very long text. Very long text. Very long text. Very long text. Very long text. Very long text. Very long text. Very long text. Very long text. Very long text. Very long text. "),
                ),
                Text("Short text"),
                Text(
                    "Very long text. Very long text. Very long text. Very long text. Very long text. Very long text. Very long text. Very long text. Very long text. Very long text. Very long text. Very long text. Very long text. Very long text. Very long text. Very long text. Very long text. ")
              ],
            ),
          ),
        ],
      ),

В то время как решение, предложенное в комментариях, дает что-то вроде этого:

GestureDetector в текстовом диапазоне без разрыва строки

Вот что я ищу:

GestureDetector в текстовом диапазоне без разрыва строки

Пожалуйста, дайте мне знать, если у вас все еще есть проблемы с решением, представленным ниже. Спасибо :)

CopsOnRoad 08.04.2019 13:13

Спасибо, но для более длинных текстов у меня получается что-то вроде последнего скриншота выше.

dan 09.04.2019 07:26

Можете ли вы поделиться скриншотом того, как вы хотите, чтобы он выглядел (последний экран)?

CopsOnRoad 09.04.2019 09:41

добавил скриншот

dan 10.04.2019 09:00

Во-первых, вы не можете сделать это с помощью Row или Column, вам нужно использовать RichText.

CopsOnRoad 10.04.2019 09:03

спасибо, что указали мне правильное направление, посмотрю на это

dan 10.04.2019 09:21

Я обновил код, взгляните сейчас.

CopsOnRoad 10.04.2019 09:22
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
7
608
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Если вы используете Row вместо Column в качестве родителя, это должно сработать.

  Row(
            children: [
              Text(
                'This ',
              ),
              GestureDetector(
                onTap: () {
                  doSomething();
                },
                child: Text(
                  'text ',
                ),
              ),
     Expanded( child: 
              Text(
                "should be in one line.",
                 ),),
            ],
          ),

Спасибо, это дает мне одну строку, но она переполняется вправо, если она слишком длинная. Я ищу решение, которое ограничено размером/шириной представления, а не переносом на каждый GestureDetector.

dan 08.04.2019 08:00

Просто оберните последнего ребенка, используя Expanded

diegoveloper 08.04.2019 10:48

он все еще переполняется, только желтый / черный перелив становится выше (высота строки без расширенного и становится выше с расширенным)

dan 08.04.2019 13:18

Не могли бы вы добавить скриншот?

diegoveloper 08.04.2019 15:12

Итак, после очистки моего кода переполнение исчезло (не знаю, что это было), но в любом случае я не смог решить свою первоначальную проблему. Добавлю скриншот в свой пост.

dan 09.04.2019 07:16

Я думаю, вы хотите, чтобы в какой-то части вашего абзаца был кликабельный текст.

Надеюсь, это поможет.

Спасибо, но мне нужен GestureDetector и для других жестов, кроме кликов.

dan 09.04.2019 07:12
Ответ принят как подходящий
var underlineStyle = TextStyle(decoration: TextDecoration.underline, color: Colors.black);

// ...

RichText(
  text: TextSpan(
    text: 'Basically what I want is a block of text with certain ',
    style: underlineStyle.copyWith(decoration: TextDecoration.none),
    children: <TextSpan>[
      TextSpan(text: 'elements ', style: underlineStyle),
      TextSpan(text: 'allowing for '),
      TextSpan(text: 'clicks ', style: underlineStyle),
      TextSpan(text: 'or '),
      TextSpan(text: 'drag gestures', style: underlineStyle ),
    ],
  ),
),

Вот и все. В сочетании с TapGestureRecognizer() связь я могу построить то, что хочу

dan 10.04.2019 09:33

Да, в recognizer есть TextSpan недвижимость и это то, что вам нужно.

CopsOnRoad 10.04.2019 09:36

Другие вопросы по теме