Widgets

TextTr

Einleitung

Das TextTr-Widget ist ein praktischer Wrapper um Flutters Text-Widget, der seinen Inhalt automatisch mithilfe des Lokalisierungssystems von Nylo Website uebersetzt.

Anstatt zu schreiben:

Text("hello_world".tr())

Koennen Sie schreiben:

TextTr("hello_world")

Dies macht Ihren Code sauberer und besser lesbar, besonders wenn Sie mit vielen uebersetzten Strings arbeiten.

Grundlegende Verwendung

@override
Widget build(BuildContext context) {
  return Column(
    children: [
      TextTr("welcome_message"),

      TextTr(
        "app_title",
        style: TextStyle(fontSize: 24, fontWeight: FontWeight.bold),
        textAlign: TextAlign.center,
      ),
    ],
  );
}

Das Widget sucht den Uebersetzungsschluessel in Ihren Sprachdateien (z.B. /lang/en.json):

{
  "welcome_message": "Welcome to our app!",
  "app_title": "My Application"
}

String-Interpolation

Verwenden Sie den Parameter arguments, um dynamische Werte in Ihre Uebersetzungen einzufuegen:

TextTr(
  "greeting",
  arguments: {"name": "John"},
)

In Ihrer Sprachdatei:

{
  "greeting": "Hello, {{name}}!"
}

Ausgabe: Hello, John!

Mehrere Argumente

TextTr(
  "order_summary",
  arguments: {
    "item": "Coffee",
    "quantity": "2",
    "total": "\$8.50",
  },
)
{
  "order_summary": "You ordered {{quantity}}x {{item}} for {{total}}"
}

Ausgabe: You ordered 2x Coffee for $8.50

Stil-Konstruktoren

TextTr bietet benannte Konstruktoren, die automatisch Textstile aus Ihrem Theme anwenden:

displayLarge

TextTr.displayLarge("page_title")

Verwendet den Stil Theme.of(context).textTheme.displayLarge.

headlineLarge

TextTr.headlineLarge("section_heading")

Verwendet den Stil Theme.of(context).textTheme.headlineLarge.

bodyLarge

TextTr.bodyLarge("paragraph_text")

Verwendet den Stil Theme.of(context).textTheme.bodyLarge.

labelLarge

TextTr.labelLarge("button_label")

Verwendet den Stil Theme.of(context).textTheme.labelLarge.

Beispiel mit Stil-Konstruktoren

@override
Widget build(BuildContext context) {
  return Column(
    crossAxisAlignment: CrossAxisAlignment.start,
    children: [
      TextTr.headlineLarge("welcome_title"),
      SizedBox(height: 16),
      TextTr.bodyLarge(
        "welcome_description",
        arguments: {"app_name": "MyApp"},
      ),
      SizedBox(height: 24),
      TextTr.labelLarge("get_started"),
    ],
  );
}

Parameter

TextTr unterstuetzt alle Standard-Parameter des Text-Widgets:

Parameter Typ Beschreibung
data String Der nachzuschlagende Uebersetzungsschluessel
arguments Map<String, String>? Schluessel-Wert-Paare fuer die String-Interpolation
style TextStyle? Textstil
textAlign TextAlign? Wie der Text ausgerichtet werden soll
maxLines int? Maximale Zeilenanzahl
overflow TextOverflow? Wie Ueberlauf behandelt werden soll
softWrap bool? Ob Text an weichen Umbruechen umbrechen soll
textDirection TextDirection? Richtung des Textes
locale Locale? Locale fuer die Textdarstellung
semanticsLabel String? Barrierefreiheits-Label

Vergleich

Ansatz Code
Traditionell Text("hello".tr())
TextTr TextTr("hello")
Mit Argumenten TextTr("hello", arguments: {"name": "John"})
Gestylt TextTr.headlineLarge("title")