1.下载插件

2.插件下载完成后重启一下android studio,在工具栏tool中会多一个flutter intl的选项

3.点击initialize for project,等待项目生成语言包

其中.arb文件是我们不同语言包,放入需要翻译的字段;intl文件夹是自动生成的,放置的翻译好的dart文件,我们不用管理

4.如果要添加其他语言需要下面操作

创建之后的文件加目录

*打开.arb看下

恭喜准备工作完成

二、代码设置

1.在pubspec.yaml文件添加以下依赖

#包含sp工具
flustars: ^0.3.2
provider: 4.3.1

2.在main文件中注册好语言包,和provider全局通知

//注意一定要用comsumer包裹起立(provider需要)Consumer<LanguageProvider>(builder: (context, languageProvider, child) {return OKToast(textPadding: EdgeInsets.symmetric(horizontal:32  , vertical: 26 ),textStyle: TextStyle(fontSize: 15, color: Colors.white),backgroundColor: textColor333,radius: 7.0,child: MaterialApp(title: '交易所',///注册路由
//              onGenerateRoute: (settings) => Routes.findRoutes(settings),theme: ThemeData(primarySwatch: Colors.blue,visualDensity: VisualDensity.adaptivePlatformDensity,),locale: _listenerLocal(languageProvider.language),localizationsDelegates: [S.delegate, //应用程序的翻译回调GlobalMaterialLocalizations.delegate,GlobalWidgetsLocalizations.delegate,],supportedLocales: S.delegate.supportedLocales,//支持语系,onGenerateTitle: (context) {return S.of(context).app_title;},home:xxpage()

locale: _listenerLocal(languageProvider.language)方法在下面第5步中

3.创建语言provider

import 'package:flustars/flustars.dart';
import 'package:flutter/material.dart';class LanguageProvider with ChangeNotifier {///String _language;String get language => _language;void changeMode(String language) async {_language = language;notifyListeners();SpUtil.putString("language", language);}
}

4.在需要设置语言的页面使用方法

 Text(S.of(context).app_title),
import 'package:bourse/generated/l10n.dart';
import 'package:flustars/flustars.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';import '../../language_model.dart';
class SettingLanguagePage extends StatefulWidget {@override_SettingLanguagePageState createState() => _SettingLanguagePageState();
}class _SettingLanguagePageState extends State<SettingLanguagePage> {String groupValue = 'zh';void _changed(value) {if (value != null) {setState(() {groupValue = value;if (value == "zh") Provider.of<LanguageProvider>(context, listen: false).changeMode("zh");if (value == "en") Provider.of<LanguageProvider>(context, listen: false).changeMode("en");if (value == "jp") Provider.of<LanguageProvider>(context, listen: false).changeMode("jp");if (value == "kr") Provider.of<LanguageProvider>(context, listen: false).changeMode("kr");SpUtil.putString("language", groupValue);});}}@overridevoid initState() {// TODO: implement initStatesuper.initState();groupValue = SpUtil.getString("language");}@overrideWidget build(BuildContext context) {return Scaffold(appBar: AppBar(title: Text("SettingLanguagePage"),),body: Center(child: Column(mainAxisAlignment: MainAxisAlignment.center,children: [Text(S.of(context).app_title),RadioListTile<String>(title: Text('汉语'),value: 'zh',groupValue: groupValue,onChanged: _changed,),RadioListTile<String>(title: Text('English'),value: 'en',groupValue: groupValue,onChanged: _changed),RadioListTile<String>(title: Text('日语'),value: 'jp',groupValue: groupValue,onChanged: _changed),RadioListTile<String>(title: Text('韩语'),value: 'kr',groupValue: groupValue,onChanged: _changed),],),),);}
}

5.当程序退出重进时,需要取出保存上一次的状态,在mian文件中设置

String value = SpUtil.getString("language");_listenerLocal(String lag) {if (lag == "zh") {return Locale('zh');} else if (lag == "en") {return Locale('en');} else if (lag == "jp") {return Locale('jp');} else if(lag == "kr"){return Locale('kr');}else{if(value.isEmpty){return Locale('zh');}else{return Locale('$value');}}}

搞定!!!!

更正:语言包不能随便命名的,要根据规范

http://www.webapps-online.com/online-tools/languages-and-locales

修改上述语言包目录

flutter 国际化flutter使用 intl插件,provider状态保存相关推荐

  1. Flutter Provider 异步通信、Provider状态管理

    题记 -- 执剑天涯,从你的点滴积累开始,所及之处,必精益求精. Flutter是谷歌推出的最新的移动开发框架. [x1]微信公众号的每日提醒 随时随记 每日积累 随心而过 [x2]各种系列的视频教程 ...

  2. flutter基于provider状态管理设置主题颜色、实现简单登录、注册功能---页面+逻辑

    一.provider状态管理设置主题颜色 第一步: 安装依赖库 provider: ^4.3.2+3 第二步: 创建共享数据模型 import 'package:flutter/material.da ...

  3. Flutter Provider状态管理-Consumer

    前言 如果对Consumer很了解的同学可以继续学习 Flutter Provider状态管理 - Selector 个人觉得Flutter的学习有三个很重要的阶段 widget的学习和使用 数据以及 ...

  4. Flutter 笔记 | Flutter 文件IO、网络请求、JSON、日期与国际化

    文件IO操作 Dart的 IO 库包含了文件读写的相关类,它属于 Dart 语法标准的一部分,所以通过 Dart IO 库,无论是 Dart VM 下的脚本还是 Flutter,都是通过 Dart I ...

  5. android 日期国际化,Flutter 日期时间选择类控件及国际化

    注意:无特殊说明,Flutter版本及Dart版本如下: Flutter版本: 1.12.13+hotfix.5 Dart版本: 2.7.0 DatePicker Flutter并没有DatePick ...

  6. 【Flutter】Flutter 应用生命周期 ( 前台状态 resumed | 后台状态 paused | 非活动状态 inactive | 组件分离状态 detached )

    文章目录 一.Flutter 应用生命周期 二.监听 Flutter 应用生命周期 三.完整代码示例 四.相关资源 一.Flutter 应用生命周期 应用生命周期 : resumed : 应用进入前台 ...

  7. 【Flutter】Flutter 拍照示例 ( Flutter 插件配置 | Flutter 插件源码示例 | iOS 应用配置 | Android 应用配置 )

    文章目录 一.Flutter 插件配置 二.Flutter 插件源码示例 三.iOS 应用配置 四.Android 应用配置 五.相关资源 一.Flutter 插件配置 Flutter 拍照示例中 , ...

  8. 【Flutter】Flutter 拍照示例 ( 创建应用 | 安装 image_picker 插件 )

    文章目录 一.Flutter 创建新应用 二.安装 image_picker 插件 三.相关资源 一.Flutter 创建新应用 创建 Flutter 应用 , 选择 菜单栏 / File / New ...

  9. 【Flutter】Flutter 项目中使用 Flutter 插件 ( Flutter 插件管理平台 | 搜索 Flutter 插件 | 安装 Flutter 插件 | 使用 Flutter 插件 )

    文章目录 一.Flutter 包和插件管理平台 二.Flutter 插件搜索示例 三.Flutter 插件装示例 1.添加 Dart 包依赖 2.获取 Dart 包 3.使用 Dart 包 4.官方的 ...

最新文章

  1. “-bash: !”: event not found、echo sudo permission denied
  2. linux下使用rpm安装libxml2,gcc,gcc-c++等基本包
  3. “正则表达式”应当称为“规则表达式”
  4. Python爬虫实战(5):模拟登录淘宝并获取所有订单
  5. odoo tree视图 当页不弹窗显示方法
  6. BZOJ 1613: [Usaco2007 Jan]Running贝茜的晨练计划
  7. 软考信息系统项目管理师_信息化与信息系统5_信息系统规划_补充问题---软考高级之信息系统项目管理师007
  8. 如何实现用户自己定义控件。
  9. 有向图的十字链表存储
  10. PostgreSQL监控指标
  11. css span 右端对齐_使用 CSS 实现具有方面感知的幽灵按钮
  12. SpringMVC上传文件的三种方式
  13. red hat4 安装yum的方法
  14. 通用新能源电动车动力电池包详细结构三维3D数模据图纸模型,格式3dxml
  15. 飞跃微信小程序一一新风口新模式,你所了解到的小程序有多少?
  16. 小米盒子显示连不上服务器,小米盒子连不上WiFi?这七个技巧绝对管用
  17. Thinkpad E430c 16GB内存安装成功
  18. 福特汉姆大学计算机科学专业,Fordham的Computer and Information Science「福特汉姆大学计算机与信息科学系」...
  19. 【云原生之Docker实战】使用Docker部署File Manager文件管理系统
  20. Element-ui源码分析之滚动条— el-scrollbar

热门文章

  1. 调度——特殊生产线介绍
  2. 【github】github问题集合
  3. 西北乱跑娃 --- python爬虫
  4. DevExpress 设置DateEdit显示年月
  5. VMware Workstation 安装 CentOS-7 (1804) 教程
  6. 从招行权证疯炒看权证风险
  7. 北大教授:只剩下学术的生活是危险的
  8. 如何修改单元格的宽度html,如何在HTML中设置单元格的宽度和高度?
  9. 强化学习——蛇棋游戏策略迭代实现
  10. 代码设置窗体的弹出模式