Widgets

TextTr

Pengantar

Widget TextTr adalah pembungkus praktis dari widget Text Flutter yang secara otomatis menerjemahkan kontennya menggunakan sistem lokalisasi Nylo Website.

Alih-alih menulis:

Text("hello_world".tr())

Anda dapat menulis:

TextTr("hello_world")

Ini membuat kode Anda lebih bersih dan lebih mudah dibaca, terutama saat berurusan dengan banyak string yang diterjemahkan.

Penggunaan Dasar

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

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

Widget akan mencari kunci terjemahan di file bahasa Anda (misalnya, /lang/en.json):

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

Interpolasi String

Gunakan parameter arguments untuk menyisipkan nilai dinamis ke dalam terjemahan Anda:

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

Di file bahasa Anda:

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

Output: Hello, John!

Beberapa Argumen

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

Output: You ordered 2x Coffee for $8.50

Konstruktor Bergaya

TextTr menyediakan konstruktor bernama yang secara otomatis menerapkan gaya teks dari tema Anda:

displayLarge

TextTr.displayLarge("page_title")

Menggunakan gaya Theme.of(context).textTheme.displayLarge.

headlineLarge

TextTr.headlineLarge("section_heading")

Menggunakan gaya Theme.of(context).textTheme.headlineLarge.

bodyLarge

TextTr.bodyLarge("paragraph_text")

Menggunakan gaya Theme.of(context).textTheme.bodyLarge.

labelLarge

TextTr.labelLarge("button_label")

Menggunakan gaya Theme.of(context).textTheme.labelLarge.

Contoh dengan Konstruktor Bergaya

@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 mendukung semua parameter widget Text standar:

Parameter Tipe Deskripsi
data String Kunci terjemahan yang akan dicari
arguments Map<String, String>? Pasangan key-value untuk interpolasi string
style TextStyle? Gaya teks
textAlign TextAlign? Cara teks harus disejajarkan
maxLines int? Jumlah baris maksimum
overflow TextOverflow? Cara menangani overflow
softWrap bool? Apakah membungkus teks pada soft break
textDirection TextDirection? Arah teks
locale Locale? Locale untuk rendering teks
semanticsLabel String? Label aksesibilitas

Perbandingan

Pendekatan Kode
Tradisional Text("hello".tr())
TextTr TextTr("hello")
Dengan argumen TextTr("hello", arguments: {"name": "John"})
Bergaya TextTr.headlineLarge("title")