1、所需要的依赖

其实flutter项目中引入多语言文件的文章有很多,这个地方就不再仔细的说,这里主要是写一下我工作中遇到的多语言问题,以及我的解决方式。

intl: ^0.17.0                    #多语言

2、使用


(1)所有需要配置多语言的资源都放在 I10n 文件夹下面,这里只是英文(intl_en.arb)和中文(intl_zh_CN.arb),这两个.arb文件中存放的是Json格式的字符串,例如下面就是(测试、即将开放、重新登录的中英文配置啦)
注意!!!
冒号的左边不可以有空格和特殊字符,只能有字母和数字组合成的字符串,第一个字符不能为数字;
在写配置的时候,冒号的左边中英文都需要一样,比如说测试的配置(如果你中文配置是这样写的 [ “test”: “测试” ],而英文配置是【 “test2”: “test”,】)那么你的中英文只会显示英文或者中文,达不到你想要的效果(也可以认为是你给它们起的名字不一样)。

(2)当我们需要在页面中使用多语言的时候,我们需要引入generated文件夹下面的 I10n.dart 文件

import 'package:XXX/generated/l10n.dart';//这里的 XXX 一般是你的项目名称,也就是说你只需要在这个项目中找到这个I10n.dart 文件就可以了

(3)引入文件之后我们就需要使用了。在页面上需要显示,那么你可以这样写

S.current.test

之后在你成功切换语言的时候就可以显示对应的中英文了
需要注意的是,如果你在这样写以后出现报错信息: Error: The getter ‘current’ isn’t defined for the class ‘String’.Try correcting the name to the name of an existing getter, or defining a getter or field named ‘current’. S.current.test,
这个问题是由于你引入的其他的文件的类名和咱们自己的语言资源文件【/generated/l10n.dart】的类名冲突了,这个时候你只需要将第(2)点中的引入变成

import 'package:XXX/generated/l10n.dart' as T;//当然,这里的 T 可以是任意的,相当于给这个文件的类型另外起了一个名字,解决冲突

使用的方式也需要变成:T.S.current.test (此处的 T 和as 后面的 T 保持一致)
(4)那么我们要如何实现切换语言呢?
我们只需要在切换语言的页面点击 事件中使用

 S.load(Locale('zh', 'CN'));//切换成中文
S.load(Locale('en', 'US'));//切换成英文

(5)flutter 使用多语言,也需要在main.dart入口文件的MaterialApp组件中写

 return MaterialApp(navigatorKey: navigatorKey,localizationsDelegates: const [S.delegate,GlobalMaterialLocalizations.delegate,GlobalCupertinoLocalizations.delegate,GlobalWidgetsLocalizations.delegate],// supportedLocales:S.delegate.supportedLocales,supportedLocales:[const Locale('en', ''), // English这里是写英文作为首选项的,也就是我们app默认显示的语言,可以自行更改// const Locale('zh', 'CN'),],localeListResolutionCallback: (locale, supportedLocales) {return null;},);

flutter实现多语言之项目使用相关推荐

  1. flutter基础 dart语言学习笔记

    1.JIT(Just-In-Time 动态编译) 即时编译为什么能大幅度提升性能 JIT,即Just-in-time,动态(即时)编译,边运行边编译: https://book.flutterchin ...

  2. 使用Flutter完成10个商业项目后的经验教训

    作者:Łukasz Kosman 和 Jakub Wojtczak 原文:https://medium.com/swlh/lessons-learned-after-making-the-first- ...

  3. 使用Flutter完成10个商业项目后的经验教训,2021大厂安卓面试集合

    自从我们交付了第一个应用程序并从客户那里收集到了五星级好评,我们认为,我们应该开始更加积极地向客户推荐Flutter.从2019年5月开始,我们决定Flutter将是我们移动技术的第一选择.同时,我们 ...

  4. 最值得阅读学习的 10 个 C 语言开源项目代码

    本文转载于: 最值得阅读学习的 10 个 C 语言开源项目代码 从扩展思路的角度来说,一个程序员应该好好读过这样一些代码: 一个操作系统内核 一个编译器(如:gcc,lua) 一个解释器(如:pyth ...

  5. c语言为什么要建项目,一个C语言小项目为什么都说牛逼

    原标题:一个C语言小项目为什么都说牛逼 意在鼓励C语言学者.更有兴趣,学习更富有创业和乐趣! 推荐加学习交流群:658807522 可以在一起学习交流,既是参赛选手,又是学者,也可以先学习再参赛,反正 ...

  6. go语言编程项目_一个项目需要多少种编程语言?

    go语言编程项目 编程语言的一大优点是多样性,您可以选择最佳的语言来解决任何给定的问题. 但是有时最坏的情况可能是项目利用此优势并构建需要许多不同语言的领域知识的应用程序或应用程序系统. 发生这种情况 ...

  7. centos 自动补全c语言,YouCompleteMe自动补全C语言大型项目 ycm

    YouCompleteMe自动补全C语言大型项目 我的ycm在vimrc中的配置" YouCompleteMe相关配置 let g:ycm_server_python_interpreter ...

  8. 10大Go语言开源项目推荐

    关注公众号 风色年代(itfantasycc) 300G微服务资料等你拿! Go语言诞生5周年!10大Go语言开源项目推荐 - Go语言中文网 - Golang中文社区 引用 2014年11月,Gol ...

  9. 优秀的 Spring Boot 语言开源项目

    优秀的 Spring Boot 语言开源项目,涵盖了企业级系统框架.文件文档系统.秒杀系统.微服务化系统.后台管理系统等各个方面 Spring Boot 中文索引 项目名称 分布式敏捷开发系统架构 项 ...

最新文章

  1. findclass java_Java Context.findClass方法代码示例
  2. 【Android 事件分发】事件分发源码分析 ( ViewGroup 事件传递机制 七 )
  3. 1.2.1 Logistic回归和梯度下降简介
  4. 《研磨设计模式》chap13 命令模式
  5. 优化DOTTEXT之三:完善Trackback
  6. Python:知识目录
  7. Written English-书面-句型学习
  8. overflow encountered in ubyte_scalars像素加减运算溢出异常
  9. 图解抖音推荐算法(布局抖音短视频的可以参考)
  10. 电脑端输入法的一些设置
  11. 苹果笔记本什么系统_收集整理:什么笔记本适合安装黑苹果系统!
  12. mipi的dsi全称_mipi协议里面csi和dsi是什么意思
  13. jsp值choose标签
  14. 华为5G手机+鸿蒙系统,还能这么玩儿?
  15. 矩阵的转置与矩阵的逆
  16. 多边形的单边裁剪算法-JS
  17. 59深度解密五十九:利用“抖音”进行吸粉的简单、另类玩法
  18. 旋转矩阵转欧拉角(二自由度约束)
  19. php 选择地区 查找,地区编码查询_php根据ip查询所在地区的代码
  20. SAP结帐操作详细操作指南

热门文章

  1. 2020年阴历三月初三 投资理财~为什么永远抄底不到最低点?
  2. c语言程序培训,C语言编程培训学习心得
  3. 油条、油饼,千滚百沸的油怎让人放心
  4. [转] 程序员也要养生
  5. 排序题和sort函数应用
  6. Python程序员面向对象技巧梳理
  7. 换了个地方,来北京工作,面试了4家python爬虫,写一些这四家(记得的)笔试题(2)
  8. 设置套接字属性和获取套接字属性,举例子设置套接字端口可重用
  9. Spring,SpringBoot,Springcloud都是干嘛的?
  10. 我做了一个艰难的决定