J'utilisais Flutter depuis plus d'une semaine et je voulais créer une application arabe (de droite à gauche).
Je lisais Internationalizing Flutter Apps , mais il ne mentionnait pas comment définir la direction de la mise en page.
Alors, comment afficher la disposition de droite à gauche (RTL) dans Flutter?
vous devez d'abord ajouter flutter_localizations
package à votre pubspec.yml
dependencies:
flutter:
sdk: flutter
flutter_localizations:
sdk: flutter
vous avez maintenant deux choix:
1. forcer une localisation (et une direction) sur tous les appareils
import 'package:flutter/material.Dart';
import 'package:flutter_localizations/flutter_localizations.Dart';
MaterialApp(
localizationsDelegates: [
GlobalMaterialLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
],
supportedLocales: [
Locale("fa", "IR"), // OR Locale('ar', 'AE') OR Other RTL locales
],
locale: Locale("fa", "IR") // OR Locale('ar', 'AE') OR Other RTL locales,
.
.
.
);
2. définissez la direction de la mise en page en fonction des paramètres régionaux de l'appareil (si les paramètres régionaux du téléphone de l'utilisateur sont une langue RTL
et existent en supportedLocales
, votre application s'exécute en mode RTL
, sinon votre application est LTR
)
import 'package:flutter/material.Dart';
import 'package:flutter_localizations/flutter_localizations.Dart';
MaterialApp(
localizationsDelegates: [
GlobalMaterialLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
],
supportedLocales: [
Locale("en", "US"),
Locale("fa", "IR"), // OR Locale('ar', 'AE') OR Other RTL locales
],
.
.
.
);
note: les langues rtl en flutter sont:
static const List<String> _rtlLanguages = <String>[
'ar', // Arabic
'fa', // Farsi
'he', // Hebrew
'ps', // Pashto
'ur', // Urdu
];
Vous devez créer un Builder et lui passer la direction de la mise en page en utilisant TextDirection.rtl
new MaterialApp(
title: 'Flutter RTL',
color: Colors.grey,
builder: (BuildContext context, Widget child) {
return new Directionality(
textDirection: TextDirection.rtl,
child: new Builder(
builder: (BuildContext context) {
return new MediaQuery(
data: MediaQuery.of(context).copyWith(
textScaleFactor: 1.0,
),
child: child,
);
},
),
);
},
.
.
.
);
Veuillez vérifier l'application Internationalization Flutter (RTL arabe) https://proandroiddev.com/internationalization-flutter-app-arabic-rtl-fe99bfae696e
Si vous avez besoin de droite à gauche ou de gauche à droite dans le champ de texte. vous pouvez utiliser TextDirection dans TextField
TextField(
textDirection: TextDirection.rtl,
decoration: InputDecoration(
labelText: "Enter Pashto Name",
),
),
Le meilleur et le plus court chemin pour définir la configuration RTL
pour toute l'application.
void main() {
runApp(
MaterialApp(
home: Directionality( // add this
textDirection: TextDirection.rtl, // set this property
child: HomePage(),
),
),
);
}