No MaterialLocalizations found. AppBar widgets require MaterialLocalizations to be provided by a Loc

No MaterialLocalizations found.

AppBar widgets require MaterialLocalizations to be provided by a Localizations widget ancestor.

错误很明显,抓住重点(红色的位置)。意思是什么呢?是说系统的本地化多语言找不到对应的多语言缩写。

如果你的应用刚好也是有多语言适配,那么问题就出在多语言简写的问题上。

找到flutter sdk系统对应的多语言简写文件:generated_material_localizations.dart,你会发现多语言简写的列表:

注意,不同sdk版本的这个多语言肯定是不一样的,因为sdk在不断完善中。新版本所支持的多语言要更丰富。

所以,系统既然只支持这么多明文的简写,那么我们如果自己命名的简写不符合这个列表,那么问题就产生了。

所以我们的*.arb文件(en.arb,zh.arb,nb.arb...)的命名要严格遵守这个规格。

举个例子,我自己的项目就是碰到这个问题,自己首先没有参考任何文档,将挪威语(Norwegian)对应简写成no.arb,或者nn.arb,结果查了1天,搞到晚上才明白这个问题出在系统多语言支持上。。。,后来改成nb.arb,问题解决

猜你喜欢

转载自blog.csdn.net/wangyajuncsd/article/details/106930365
今日推荐