Flutter使用easy_localization时LTR与RTL文本方向异常问题
问题根源定位
- 你修改的是本地Pub缓存中easy_localization包内置的RTL语种判定数组,该文件不属于你项目的lib或assets目录,因此仅复制这两个目录到新项目仍会复现问题。
- 你误将en、de加入RTL语种数组后,easy_localization会错误将这两个LTR语种判定为RTL方向,导致输入框文本排版异常;fr未被加入该数组,因此方向判定正常。
- 该数组默认仅包含
ar、fa、he、ps、ur五个RTL语种,无其他额外语种。
修复方案
1. 重置被修改的依赖包
执行以下命令修复本地Pub缓存,将所有依赖重置为官方原始版本:flutter pub cache repair
如果仅需要修复easy_localization单包,也可以手动删除本地Pub缓存目录中的easy_localization文件夹,再回到项目根目录执行flutter pub get重新拉取原始版本即可恢复默认RTL数组配置。
2. 正确配置项目支持语种
不要直接修改第三方依赖源码,项目支持的语种需要在easy_localization初始化阶段配置,示例如下:
void main() async { WidgetsFlutterBinding.ensureInitialized(); await EasyLocalization.ensureInitialized(); runApp( EasyLocalization( // 此处配置项目实际支持的语种 supportedLocales: const [ Locale('en'), Locale('de'), Locale('fr'), Locale('ar'), ], path: 'assets/translations', fallbackLocale: const Locale('en'), child: const MyApp(), ), ); }
3. 验证修复
重启应用后切换en、de语种,确认文本排版方向恢复为LTR,输入框标点位置显示正常。
内容的提问来源于stack exchange,提问作者AhmedxHs
相关产品推荐
相关产品推荐

