Как выделить (или отформатировать) текст в абзаце жирным шрифтом?

97

Как сделать строку текста с другим форматированием?

например:

Привет мир

Dvdwasibi
источник

Ответы:

202

Вам следует использовать виджет RichText .

Виджет RichText принимает виджет TextSpan, который также может иметь список дочерних TextSpans.

Каждый виджет TextSpan может иметь свой TextStyle .

Вот пример кода для рендеринга: Hello World

var text = new RichText(
  text: new TextSpan(
    // Note: Styles for TextSpans must be explicitly defined.
    // Child text spans will inherit styles from parent
    style: new TextStyle(
      fontSize: 14.0,
      color: Colors.black,
    ),
    children: <TextSpan>[
      new TextSpan(text: 'Hello'),
      new TextSpan(text: 'World', style: new TextStyle(fontWeight: FontWeight.bold)),
    ],
  ),
 );
Dvdwasibi
источник
26

[ОБНОВИТЬ]

Приведенный ниже ответ лучше всего подходит для пары слов, а не для абзаца.Если у вас есть длинное предложение или абзац, в котором вам нужно отформатировать конкретный текст, предпочитайте использовать RichText, как это было предложено @DvdWasibi в приведенном выше ответе

[СТАРЫЙ ОТВЕТ]

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

Примечание. Это может не выглядеть хорошо, поскольку длинный абзац подходит для заголовков и т. Д.

Row(children: <Widget>[
      Text("Hello"),
      Text("World", style: TextStyle(fontWeight: FontWeight.bold))
    ])
`

и вы должны получить желаемый результат как «Hello World »

maheshmnj
источник
8
Это не лучшая идея, если вам нужен абзац текста. Каждый текст () внутри строки создает собственное вертикальное / горизонтальное пространство.
Мухаммад Адиль
так какая альтернатива использованию Row? и если я хочу, чтобы текст располагался рядом с разным форматированием
maheshmnj
2
посмотрите на ответ @Dvdwasibi выше, просто попробуйте свою реализацию с большим абзацем, и вы найдете два разных абзаца бок о бок. ваш ответ правильный для 2/3 слов, но не для абзаца.
Мухаммад Адиль
10
return RichText(
  text: TextSpan(
    text: 'Can you ',
    style: TextStyle(color: Colors.black),
    children: <TextSpan>[
      TextSpan(
        text: 'find the',
        style: TextStyle(
          color: Colors.green,
          decoration: TextDecoration.underline,
          decorationStyle: TextDecorationStyle.wavy,
        ),
        recognizer: _longPressRecognizer,
      ),
      TextSpan(text: 'secret?'),
    ],
  ),
);
Парвеш Хан
источник