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


97

Wie kann ich eine Textzeile mit unterschiedlicher Formatierung haben?

z.B:

Hallo Welt

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)),
    ],
  ),
 );

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


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?'),
    ],
  ),
);
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.