如何在应用程序开始时将所有小部件的方向从右到左更改?

How to change directions to right to left of all widgets at the app beginning?

我的应用程序中的语言太多。当我 select 一种应该有 rtl 方向的语言(例如:阿拉伯语、伊朗语)时,我的应用程序可以完美运行。它将所有小部件和字体从 ltr 更改为 rtl,当我 select 语言并重新启动应用程序时,语言工作正常但小部件的布局仍然是 ltr。如何在开始时检查小部件的方向并在必要时进行更改?

您可以为此使用 MaterialApp 构建器:

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',结果执行文本方向。