第四百六十一回

文章目录

  • 1. 概念介绍
  • 2. 使用方法
    • 2.1 静态切换
    • 2.2 动态切换
  • 3. 示例代码
  • 4. 内容总结

我们在上一章回中介绍了"readMore简介"相关的内容,本章回中将介绍如何在程序中切换语言.闲话休提,让我们一起Talk Flutter吧。

在这里插入图片描述

1. 概念介绍

我们这本章回中介绍的切换语言是指切换App程序当前使用的语言,比如App程序当前的语言为英文,我们可以把它切换成中文。在正常情况下App程序会跟随手机系统的
语言设置,之所以有这个切换语言的需求是因为iOS15以后的版本可以在设置中为每个App程序单独设置语言,而Andoird目前还不支持此功能。我们将在本章回中详细
介绍如何切换App程序的语言。

2. 使用方法

切换程序中的语言有两种方法:静态切换和动态切换,我们将在接下来的小节中详细介绍。

2.1 静态切换

程序中默认的语言设置由MaterialApp的locale属性控制,我们在程序中切换语言时修改这个属性就可以。不过这种方法需要在程序运行前指定语言,因此我们称它为
静态切换。这种方式不够灵活,我们就不详细介绍了。不过可以对它做一些修改:使用动态变量给locale属性赋值,然后在程序中动态修改这个变量的值,进而达到切换
语言的效果,在动态修改时最好通过状态管理的方式实现,比如我们在前面章回中介绍的Provider.

2.2 动态切换

我们还可以借助Flutter intl插件来切换语言,它可以在App程序运行的过程中切换语言,因此我们称它为动态切换。下面是详细的使用方法:

  • 使用插件配置好程序支持的多种语言,详细参考第一百四十二回的内容;
  • 使用插件中的load方法切换语言,该方法是静态方法,可以直接使用;
  • 刷新页面,否则页面中使用文本的地方不会被修改,还会显示修改前的语言;
    按照上面的方法切换程序中的语言后,只在当前程序运行时有效果,如果退出程序后再次进入程序仍然是和手机的系统语言保持一致。如果想持久化保存语言的设置,那么
    我们需要把语言的配置信息保存在系统文件中,等到下次程序启动时从系统文件中读取保存的语言,并且把它赋值给MaterialApp的localen属性。

3. 示例代码

setState(() {S.load(const Locale('zh', 'zh'),);
});

上面的示例代码演示了如何把当前语言修改为中文的方法,修改完后同时更新了页面设置。我们可以把这个代码赋值给按钮的onPress属性,这样就可以在点击按钮的
时候修改系统语言。我在这里就不演示程序的运行效果了,建议大家自己动手去实践。
此外,我简单分析了插件中的代码,它本质上是使用intl的defaultLocalen属性来修改程序中的语言。intl是Flutter官方提供的插件,我们可以通过该插件获取和
修改程序中的语言。我们在这里就不介绍了,就当作留给大家的作业。

4. 内容总结

最后,我们对本章回的内容做一个全面总结:

  • 程序的语言由MaterialApp的locale属性控制;
  • 可以修改MaterialApp的locale属性来静态修改程序的语言;
  • 可以通过Flutter intl插件的load方法动态修改程序的语言;
    看官们,与"如何在程序中切换语言"相关的内容就介绍到这里,欢迎大家在评论区交流与讨论!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/620976.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【快捷部署】017_MongoDB(6.0.14)

📣【快捷部署系列】017期信息 编号选型版本操作系统部署形式部署模式复检时间017MongoDB6.0.14Ubuntu 20.04apt单机2024-04-11 一、快捷部署 #!/bin/bash ################################################################################# # 作者:…

imx6ul uboot移植

1.添加开发板 1.解压uboot 2.复制config并修改 3.复制头文件修改 4.复制板级文件夹 5.修改里面的文件(左上角是文件名) 修改Kconfig(添加) 新建脚本 mx6ull_alientek_emmc.sh 2.进入uboot目录下 修改Makefile 编译 make mx6ull…

#新版Onenet云平台使用(ESP8266 AT指令上报数据以及公网MQTT服务器连接测试)

1.上云方式:MQTT 参考: 新版ONENET物联网开放平台ATMQTT指令连接_at指令连接onenet的mqtt-CSDN博客https://blog.csdn.net/lilbye/article/details/131770196 ESP8266-01s入门:AT指令讲解、上云与MQTT通信教程-物联沃-IOTWORD物联网https:…

transformer上手(7)—— 快速分词器

1 快速分词器 Hugging Face 共提供了两种分分词器: 慢速分词器:Transformers 库自带,使用 Python 编写;快速分词器:Tokenizers 库提供,使用 Rust 编写。 特别地,快速分词器除了能进行编码和解…

代码随想录算法训练营第二十七天|39.组合总和、40.组合总和II、131.分割回文串

39.组合总和 思路: 本题和77.组合 ,216.组合总和III的区别是:本题没有数量要求,可以无限重复,但是有总和的限制,所以间接的也是有个数的限制。 本题搜索的过程抽象成树形结构如下: 注意图中叶…

学习笔记——C语言基本概念栈和队列——(14)

本次笔记是C语言的最后学习内容。 1、栈 特点:先进后出 堆栈又名栈( stack) , 它是一种运算受限的线性表。 限定仅在表尾进行插入和删除操作的线性表。 这一端被称为栈顶, 相对地, 把另一端称为栈底。 向…

[大模型]Baichuan2-7B-chat langchain 接入

Baichuan2-7B-chat langchain 接入 这篇主要讲 Baichuan2-7B-chat 如何对接Langchain中 langchain.llms.base 的 LLM 模块,并且提供一个快捷搭建向量数据库、Agent等多功能的Langchain应用的部署方案;关于如何具体对接向量数据库和gradio的部分请参考in…

排序之归并排序

代码 先上代码,根据代码将归并排序的整个过程。 class Solution {public int[] sortArray(int[] nums) {int[] tmp new int[nums.length];merge(nums, 0, nums.length - 1, tmp);return nums;}private void merge(int[] nums, int left, int right, int[] tmp){if…

kmeans聚类sklearn实现(Python实验)

Kmeans毫无疑问,好用又“便宜”的算法,经常在很多轻量化场景中实现。所谓的“聚类”(Clustering),就是通过欧氏距离找哪些点构成一个簇。假设我们空间中有一堆点,通过肉眼大概可以看出有两簇,思…

OpenHarmony实战开发-如何实现图片缩放效果。

介绍 图片预览在应用开发中是一种常见场景,在诸如QQ、微信、微博等应用中均被广泛使用。本模块基于Image组件实现了简单的图片预览功能。 使用说明: 双指捏合对图片进行缩放双击图片进行图片的大小切换,在放大状态下,双击可恢复…

TensorFlow 1.x的学习

.为什么还有很多人都选择使用TensorFlow 1.x 兼容性问题: TensorFlow 1.x在一些旧项目中已经得到了广泛应用,这些项目可能依赖于1.x版本的特定API或行为。升级到2.x可能需要大量的代码修改和测试工作,对于一些已经稳定运行的项目,维护者可能…

内网渗透-内网环境下的横向移动总结

内网环境下的横向移动总结 文章目录 内网环境下的横向移动总结前言横向移动威胁 威胁密码安全 威胁主机安全 威胁信息安全横向移动威胁的特点 利用psexec 利用psexec.exe工具msf中的psexec 利用windows服务 sc命令 1.与靶机建立ipc连接2.拷贝exe到主机系统上3.在靶机上创建一个…