Widgets

TextTr

Introduction

Le widget TextTr est un raccourci pratique autour du widget Text de Flutter qui traduit automatiquement son contenu en utilisant le systeme de localisation de Nylo Website.

Au lieu d'ecrire :

Text("hello_world".tr())

Vous pouvez ecrire :

TextTr("hello_world")

Cela rend votre code plus propre et plus lisible, surtout lorsque vous travaillez avec de nombreuses chaines traduites.

Utilisation de base

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

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

Le widget recherchera la cle de traduction dans vos fichiers de langue (par exemple, /lang/en.json) :

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

Interpolation de chaines

Utilisez le parametre arguments pour injecter des valeurs dynamiques dans vos traductions :

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

Dans votre fichier de langue :

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

Resultat : Hello, John!

Arguments multiples

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

Resultat : You ordered 2x Coffee for $8.50

Constructeurs avec style

TextTr fournit des constructeurs nommes qui appliquent automatiquement les styles de texte de votre theme :

displayLarge

TextTr.displayLarge("page_title")

Utilise le style Theme.of(context).textTheme.displayLarge.

headlineLarge

TextTr.headlineLarge("section_heading")

Utilise le style Theme.of(context).textTheme.headlineLarge.

bodyLarge

TextTr.bodyLarge("paragraph_text")

Utilise le style Theme.of(context).textTheme.bodyLarge.

labelLarge

TextTr.labelLarge("button_label")

Utilise le style Theme.of(context).textTheme.labelLarge.

Exemple avec les constructeurs avec style

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

Parametres

TextTr prend en charge tous les parametres standard du widget Text :

Parametre Type Description
data String La cle de traduction a rechercher
arguments Map<String, String>? Paires cle-valeur pour l'interpolation de chaines
style TextStyle? Style du texte
textAlign TextAlign? Alignement du texte
maxLines int? Nombre maximum de lignes
overflow TextOverflow? Gestion du debordement
softWrap bool? Retour a la ligne automatique
textDirection TextDirection? Direction du texte
locale Locale? Locale pour le rendu du texte
semanticsLabel String? Label d'accessibilite

Comparaison

Approche Code
Traditionnelle Text("hello".tr())
TextTr TextTr("hello")
Avec arguments TextTr("hello", arguments: {"name": "John"})
Avec style TextTr.headlineLarge("title")