首页 > 解决方案 > 在 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(),
    );
  }
}

标签: flutterdartlocalization

解决方案


在主页中使用 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()),

);


推荐阅读