Widgets

LanguageSwitcher

Einleitung

Das LanguageSwitcher-Widget bietet eine einfache Möglichkeit, den Sprachwechsel in Ihren Nylo Website-Projekten zu handhaben. Es erkennt automatisch die verfügbaren Sprachen in Ihrem /lang-Verzeichnis und zeigt sie dem Benutzer an.

Was macht LanguageSwitcher?

  • Zeigt verfügbare Sprachen aus Ihrem /lang-Verzeichnis an
  • Wechselt die App-Sprache, wenn der Benutzer eine auswählt
  • Speichert die ausgewählte Sprache über App-Neustarts hinweg
  • Aktualisiert automatisch die UI, wenn die Sprache gewechselt wird

Hinweis: Wenn Ihre App noch nicht lokalisiert ist, erfahren Sie in der Lokalisierung-Dokumentation, wie Sie dies tun können, bevor Sie dieses Widget verwenden.

Dropdown-Widget

Die einfachste Art, LanguageSwitcher zu verwenden, ist als Dropdown in Ihrer App-Leiste:

@override
Widget build(BuildContext context) {
  return Scaffold(
    appBar: AppBar(
      title: Text("Settings"),
      actions: [
        LanguageSwitcher(), // Add to the app bar
      ],
    ),
    body: Center(
      child: Text("Hello World".tr()),
    ),
  );
}

Wenn der Benutzer auf das Dropdown tippt, sieht er eine Liste der verfügbaren Sprachen. Nach Auswahl einer Sprache wechselt die App automatisch und aktualisiert die UI.

Bottom Sheet Modal

Sie können Sprachen auch in einem Bottom Sheet Modal anzeigen:

@override
Widget build(BuildContext context) {
  return Scaffold(
    body: Center(
      child: MaterialButton(
        child: Text("Change Language"),
        onPressed: () {
          LanguageSwitcher.showBottomModal(context);
        },
      ),
    ),
  );
}

Das Bottom Modal zeigt eine Liste von Sprachen mit einem Häkchen neben der aktuell ausgewählten Sprache an.

Modal-Höhe anpassen

LanguageSwitcher.showBottomModal(
  context,
  height: 300, // Custom height
);

Benutzerdefinierter Dropdown-Builder

Passen Sie an, wie jede Sprachoption im Dropdown angezeigt wird:

LanguageSwitcher(
  dropdownBuilder: (Map<String, dynamic> language) {
    return Row(
      children: [
        Icon(Icons.language),
        SizedBox(width: 8),
        Text(language['name']), // e.g., "English"
        // language['locale'] contains the locale code, e.g., "en"
      ],
    );
  },
)

Sprachwechsel behandeln

LanguageSwitcher(
  onLanguageChange: (Map<String, dynamic> language) {
    print('Language changed to: ${language['name']}');
    // Perform additional actions when language changes
  },
)

Parameter

Parameter Typ Standard Beschreibung
icon Widget? - Benutzerdefiniertes Symbol für den Dropdown-Button
iconEnabledColor Color? - Farbe des Dropdown-Symbols
iconSize double 24 Größe des Dropdown-Symbols
dropdownBgColor Color? - Hintergrundfarbe des Dropdown-Menüs
hint Widget? - Hinweis-Widget, wenn keine Sprache ausgewählt ist
itemHeight double kMinInteractiveDimension Höhe jedes Dropdown-Elements
elevation int 8 Erhebung des Dropdown-Menüs
padding EdgeInsetsGeometry? - Abstand um das Dropdown
borderRadius BorderRadius? - Rahmenradius des Dropdown-Menüs
textStyle TextStyle? - Textstil für Dropdown-Elemente
langPath String 'lang' Pfad zu Sprachdateien in Assets
dropdownBuilder Function(Map<String, dynamic>)? - Benutzerdefinierter Builder für Dropdown-Elemente
dropdownAlignment AlignmentGeometry AlignmentDirectional.centerStart Ausrichtung der Dropdown-Elemente
dropdownOnTap Function()? - Callback beim Tippen auf ein Dropdown-Element
onTap Function()? - Callback beim Tippen auf den Dropdown-Button
onLanguageChange Function(Map<String, dynamic>)? - Callback bei Sprachwechsel

Statische Methoden

Aktuelle Sprache abrufen

Rufen Sie die aktuell ausgewählte Sprache ab:

Map<String, dynamic>? lang = await LanguageSwitcher.currentLanguage();
// Returns: {"en": "English"} or null if not set

Sprache speichern

Spracheinstellung manuell speichern:

await LanguageSwitcher.storeLanguage(
  object: {"fr": "French"},
);

Sprache löschen

Gespeicherte Spracheinstellung entfernen:

await LanguageSwitcher.clearLanguage();

Sprachdaten abrufen

Sprachinformationen aus einem Locale-Code abrufen:

Map<String, String>? langData = LanguageSwitcher.getLanguageData("en");
// Returns: {"en": "English"}

Map<String, String>? langData = LanguageSwitcher.getLanguageData("fr_CA");
// Returns: {"fr_CA": "French (Canada)"}

Sprachliste abrufen

Alle verfügbaren Sprachen aus dem /lang-Verzeichnis abrufen:

List<Map<String, String>> languages = await LanguageSwitcher.getLanguageList();
// Returns: [{"en": "English"}, {"es": "Spanish"}, ...]

Bottom Modal anzeigen

Das Sprachauswahl-Modal anzeigen:

await LanguageSwitcher.showBottomModal(context);

// With custom height
await LanguageSwitcher.showBottomModal(context, height: 400);

Unterstützte Locales

Das LanguageSwitcher-Widget unterstützt Hunderte von Locale-Codes mit lesbaren Namen. Einige Beispiele:

Locale-Code Sprachname
en English
en_US English (United States)
en_GB English (United Kingdom)
es Spanish
fr French
de German
zh Chinese
zh_Hans Chinese (Simplified)
ja Japanese
ko Korean
ar Arabic
hi Hindi
pt Portuguese
ru Russian

Die vollständige Liste umfasst regionale Varianten für die meisten Sprachen.