如何在应用程序开始时将所有小部件的方向从右到左更改?
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',结果执行文本方向。
我的应用程序中的语言太多。当我 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',结果执行文本方向。