flutter - 在 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()),
);
推荐阅读
- python - AttributeError:“字节”对象没有属性“状态”
- powershell - InvalidOperation: (:) [Start-Process], InvalidOperationException
- excel - 如何设置 Excel 数据透视表以通过 VBA 仅显示排名 1?
- c# - XmlSerializer 序列化属性中的空整数列表
- typescript - 用 worker 构建一个 TypeScript 项目
- css - 不同的选择器,相同的样式,如何防止less中的重复输出
- node.js - 从 nodejs 服务在 redis-cache 中缓存 JSON 的最佳方法是什么?
- javascript - 文本较大时如何将文本移动到同一行的新行
- javascript - 如何获得现在和下周五之间的小时差
- testing - 如何将设备添加到 Botium Box 中的设备集