我的应用程序中有太多的语言。当我选择一种应该有rtl方向的语言(例如:阿拉伯语、伊朗语)时,我的应用程序运行得很好。它将所有小部件和字体从ltr更改为rtl,当我选择语言并重新启动应用程序时,语言正常工作,但小部件的布局仍然是ltr。如何在开始时检查小部件的方向并在必要时进行更改?
你可以使用你的MaterialApp builder:
return MaterialApp(
// rest of your application,
builder: (context, child) => Directionality(
textDirection: TextDirection.rtl,
child: child,
),
)
裁判:https://pub.dev/documentation/simple_flutter_i18n/latest/
除了一个名为Thierry的用户的解决方案(我认为他的答案是正确的)之外,我还运行了以下代码并得到了我想要的结果。
代码:
var data = EasyLocalizationProvider.of(context).data;
return EasyLocalizationProvider(
data: data,
//The important part is below:
child: MaterialApp(
builder: (context, child) => Directionality(
textDirection: data.savedLocale == Locale('ar', '')
? TextDirection.rtl
: data.savedLocale == Locale('fa', '')
? TextDirection.rtl
: TextDirection.ltr,
child: child,
),
我的解决方案是:"data.savedLocale"——比;savedLocale函数位于我使用的easy_localization_provider包中。我检查了语言代码,如果'ar'或'fa',结果执行文本方向。