Wie fette (oder formatiere) ich einen Text innerhalb eines Absatzes?

97

Wie kann ich eine Textzeile mit unterschiedlicher Formatierung haben?

z.B:

Hallo Welt

Dvdwasibi
quelle

Antworten:

202

Sie sollten das RichText- Widget verwenden.

Ein RichText-Widget nimmt ein TextSpan- Widget auf, das auch eine Liste untergeordneter TextSpans enthalten kann.

Jedes TextSpan-Widget kann einen anderen TextStyle haben .

Hier ist der zu rendernde Beispielcode: 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
quelle
26

[AKTUALISIEREN]

Die folgende Antwort eignet sich am besten für einige Wörter und nicht für einen Absatz. Wenn Sie einen langen Satz oder einen Absatz haben, in dem Sie einen bestimmten Text formatieren müssen, verwenden Sie lieber RichText, wie von @DvdWasibi in der obigen Antwort vorgeschlagen

[ALTE ANTWORT]

Ich mag es, meinen Code kurz und sauber zu halten. So füge ich zwei Textfelder in einer Reihe hinzu, eines mit normaler Schrift und eines mit Fettdruck .

Hinweis: Dies sieht möglicherweise nicht gut aus, wenn ein langer Absatz für Überschriften usw. gut aussieht.

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

und Sie sollten eine gewünschte Ausgabe als "Hallo Welt " erhalten

maheshmnj
quelle
8
Dies ist keine gute Idee, wenn Sie einen Textabschnitt haben möchten. Jeder Text () in der Zeile erstellt einen eigenen vertikalen / horizontalen Bereich.
Muhammad Adil
Was ist die Alternative zur Verwendung von Row? und wenn ich Text nebeneinander mit unterschiedlicher Formatierung haben
möchte
2
Schauen Sie sich die obige Antwort von @Dvdwasibi an. Versuchen Sie einfach Ihre Implementierung mit einem großen Absatz, und Sie werden zwei verschiedene Absätze nebeneinander finden. Ihre Antwort lautet Richtig für 2/3 Wörter, jedoch nicht für einen Absatz.
Muhammad Adil
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?'),
    ],
  ),
);
Parvesh Khan
quelle