在Flutter中将本地化更改为阿拉伯语时,小工具的方向不会更改为RTL



我有一个应用程序,我想使用easy_localization包将其本地化为阿拉伯语。它改变了语言,但小部件的方向没有改变。

void main() {
runApp(
EasyLocalization(
child: MyApp(),
supportedLocales: [
Locale('en', 'US'),
Locale('ku', ''),
Locale('ar','DZ'),
],
path: 'assets/langs',
),
);
}
@override
Widget build(BuildContext context) {
return MaterialApp(
localizationsDelegates: [
GlobalMaterialLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
GlobalCupertinoLocalizations.delegate,
KuMaterialLocalizations.delegate
],
locale: Locale('ar'),
title: 'MyApp',
theme: ThemeData(
primarySwatch: Colors.blue,
visualDensity: VisualDensity.adaptivePlatformDensity,
),
home: Language(),
);
}
}

在主页中,使用context.Locale.languageCode、localizationsDelegates和supportedLocales以及设置Locale属性

return MaterialApp(
localizationsDelegates: context.localizationDelegates,
supportedLocales: [Locale('en', 'US'), Locale('ar', 'SA')],
locale: Locale(context.locale.languageCode),
home: LoginStatePage());

}

如果要覆盖默认语言,在Main中。Dart

您可以设置EasyLocalization 的属性startLocale

runApp(
EasyLocalization(
supportedLocales: [Locale('en', 'US'), Locale('ar', 'SA')],
path: 'assets/translations',
assetLoader: CodegenLoader(),
saveLocale: true,
startLocale: Locale('ar', 'SA'),
child: MyApp()),

);

您可以在此处使用此答案。

向材料应用程序添加密钥,如key: ValueKey<Locale>(context.locale),或者用上面的键用AnimatedSwitcher小部件包装Material应用程序,也可以在不加载整个应用程序的情况下进行反射。

最新更新