flutter项目怎么判断是不是web平台?Unsupported operation: Platform._operatingSystem

如果你使用Platform 这个工具来判断的时候,很有可能会报错: 

======== Exception caught by widgets library =======================================================
The following UnsupportedError was thrown building MyApp(dirty):
Unsupported operation: Platform._operatingSystem

The relevant error-causing widget was: 

Platform判断的时候只能判断除了web平台的判断:

Flutter 的 Platform 类提供了一些属性和方法,用于获取关于当前平台的信息。以下是一些常用的 Platform 属性和方法:

Platform.isAndroid:一个布尔值,用于检查当前平台是否为 Android。

Platform.isIOS:一个布尔值,用于检查当前平台是否为 iOS。

Platform.isFuchsia:一个布尔值,用于检查当前平台是否为 Fuchsia。

Platform.isLinux:一个布尔值,用于检查当前平台是否为 Linux。

Platform.isMacOS:一个布尔值,用于检查当前平台是否为 macOS。

Platform.isWindows:一个布尔值,用于检查当前平台是否为 Windows。

 只能使用这种方式判断web平台:如果是web平台返回true,不是返回false

identical(0, 0.0)

所以如果你想判断是不是web平台,然后修改字体可以这样:

          // 解决桌面端字体粗细不一致和繁体的情况
          fontFamily: identical(0, 0.0) ? null : "微软雅黑",

 因为只有web平台下js判断0和0.0才判断为相等,其他语言都是false。

至于js为啥会将0和0.0判断为相等,是因为js使用弱类型判断的时候,会对右边的类型转成左边的类型,然后再进行判断,转换后的0.0其实就是0,所以才相等。

js问题

js中 0==‘0’、0==[] 为 true ,为什么 ‘0’==[] 为false

分析
== 是弱类型比较

当两者类型不同时会发生类型转换
0 == “0”:先把“0”转为number类型再比较;
0 == []:有对象的话,先获取对象的原始值,如果原始值为number类型,直接与0比较;如果原始值为字符串类型,先转为number类型再比较;(在这里[]的原始值为“”,符合第二种情况)
“0” == []:首先获取[]的原始值,即空字符串“”,然后进行两个字符串“0”与“”之间的比较。字符串之间的比较遵循的是逐个字符使用基于标准字典的 Unicode 值来进行比较的规则,所以这俩字符串不同。
前两者等式成立都是因为发生了一次类型转换,而后者如果要成立,就要发生两次类型转换,这应该是非法的。真正成立的等式是’’==[],只发生一次类型转换其实你拿str=“0”,然后取str[0]就知道这个其实是有值的,这显然不符合空数组的定义。

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

分布式锁的产生以及使用

日常开发中,针对一些需要锁定资源的操作,例如商城的订单超卖问题、订单重复提交问题等。 都是为了解决在资源有限的情况限制客户端的访问,对应的是限流。 单节点锁问题 目前针对这种锁资源的情况采取的往往是互斥锁,例如 java 里…

Node+Express编写接口---前端

前端页面 vue_node_admin: 第一个以node后端,vue为前端的后台管理项目https://gitee.com/ah-ah-bao/vue_node_admin.git

1.1 数据库概述

1.1 数据库概述 1.1.1 数据库基本概念 - 数据(Data) - 数据库(DataBase,DB) - 数据库管理系统(DataBase Management System,DBMS) - …

【C++】List模拟实现过程中值得注意的点

👀樊梓慕:个人主页 🎥个人专栏:《C语言》《数据结构》《蓝桥杯试题》《LeetCode刷题笔记》《实训项目》《C》《Linux》《算法》 🌝每一个不曾起舞的日子,都是对生命的辜负 目录 前言 1.List迭代器 2.适…

AI对比:ChatGPT与文心一言的异同与未来

文章目录 📑前言一、ChatGPT和文心一言概述1.1 ChatGPT1.2 文心一言 二、ChatGPT和文心一言比较2.1 训练数据与知识储备2.2 语义理解与生成能力2.2 应用场景与商业化探索 三、未来展望3.1 模型规模与参数数量不断增加3.2 多模态交互成为主流3.3 知识图谱与大模型的结…

Vue2移动端项目使用$router.go(-1)不生效问题记录

目录 1、this.$router.go(-1) 改成 this.$router.back() 2、存储 from.path,使用 this.$router.push 3、hash模式中使用h5新增的onhashchange事件做hack处理 4、this.$router.go(-1) 之前添加一个 replace 方法 问题背景 : 在 Vue2 的一个移动端开发…

JS-WebAPIs- Window对象(五)

• BOM(浏览器对象模型) BOM(Browser Object Model ) 是浏览器对象模型 window对象是一个全局对象,也可以说是JavaScript中的顶级对象像document、alert()、console.log()这些都是window的属性,基本BOM的属性和方法都是window的。所有通过var定义在全局…

【web 编程技术】基于 B/S 架构的电商平台(java web)

基于 B/S 架构的电商平台(java web) 课程设计实验目的课程设计实验环境课程设计功能概述课程设计需求分析三层架构图功能列表系统用例图系统活动图-用户端需求分析 课程设计详细设计实现过程数据库BaseServlet 的实现商品显示模块-分页显示所有商品、查看…

《WebKit 技术内幕》之五(1): HTML解释器和DOM 模型

第五章 HTML 解释器和 DOM 模型 1.DOM 模型 1.1 DOM标准 DOM (Document Object Model)的全称是文档对象模型,它可以以一种独立于平台和语言的方式访问和修改一个文档的内容和结构。这里的文档可以是 HTML 文档、XML 文档或者 XHTML 文档。D…

MySQL 索引(下)

🎉欢迎您来到我的MySQL基础复习专栏 ☆* o(≧▽≦)o *☆哈喽~我是小小恶斯法克🍹 ✨博客主页:小小恶斯法克的博客 🎈该系列文章专栏:重拾MySQL-进阶篇 🍹文章作者技术和水平很有限,如果文中出现…

【STM32调试】寄存器调试不良问题记录持续版

STM32寄存器调试不良问题记录 低功耗管理NVIC(内嵌的中断向量控制器)EXTI(外部中断/事件) 记录一些stm32调试过程中:不易被理解、存在使用误区、不清不楚、是坑、使用常识等方面的一些记录。本记录只包含stm32的内核以…

UE5 C++学习笔记 常用宏的再次理解

1.随意创建一个类,他都有UCLASS()。GENERATED_BODY()这样的默认的宏。 UCLASS() 告知虚幻引擎生成类的反射数据。类必须派生自UObject. (告诉引擎我是从远古大帝UObject中,继承而来,我们是一家人,只是我进化了其他功能…

动态规划——炮兵回城【集训笔记】

题目描述 游戏盘面是一个m行n列的方格矩阵,将每个方格用坐标表示,行坐标从下到上依次递增,列坐标从左至右依次递增,左下角方格的坐标为(1,1),则右上角方格的坐标为(m,n)。 游戏结束盘上只剩下一枚炮兵没有回到城池中&a…

编曲学习:Cubase12导入Cubasis工程的方法!

Steinberg 发布 Cubasis 3 项目导入器,可将 Cubasis 的项目导入到 Cubase 使用https://m.midifan.com/news_body.php?id35635 我偶然看到这个文章,不过发现Cubase12默认好像没有这个选项,心想着要是移动端能和PC端同步,感觉会挺…

【网站项目】329网月科技公司门户网站

🙊作者简介:多年一线开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。🌹赠送计算机毕业设计600个选题excel文件,帮助大学选题。赠送开题报告模板&#xff…

深入理解JavaScript箭头函数

🧑‍🎓 个人主页:《爱蹦跶的大A阿》 🔥当前正在更新专栏:《VUE》 、《JavaScript保姆级教程》、《krpano》、《krpano中文文档》 ​ ​ ✨ 前言 函数是JavaScript中非常重要的一个组成部分,可以封装代码逻辑,提高代…

x-cmd pkg | jq - 命令行 JSON 处理器

目录 简介首次用户功能特点类似工具进一步探索 简介 jq 是轻量级的 JSON 处理工具,由 Stephen Dolan 于 2012 年使用 C 语言开发。 它的功能极为强大,语法简洁,可以灵活高效地完成从 JSON 数据中提取特定字段、过滤和排序数据、执行复杂的转…

Transformer and Pretrain Language Models3-2

transformer structure注意力机制的各种变体 第二种变体: 如果两个向量的维度不一样,我们就需要在中间加上一个权重矩阵,来实现他们之间的相乘,然后最后得到一个标量 第三种变体: additive attention 它和前面的有…

顶顶通用户申请和安装 空号识别 模块流程

一、申请 空号识别 授权 打开网址:http://my.ddrj.com,注册并登录。 点击“我的授权” -> “申请授权” (根据负责人的要求选择“在线”或是“离线”)。 找到名称为空号识别的授权并点击“加号”图标打开授权,然…

JDK 动态代理(Spring AOP 的原理)(面试重点)

代理模式 也叫委托模式.定义:为其他对象提供⼀种代理以控制对这个对象的访问.它的作⽤就是通过提供⼀个代理类,让我们 在调⽤⽬标⽅法的时候,不再是直接对⽬标⽅法进⾏调⽤,⽽是通过代理类间接调⽤,在某些情况下,⼀个对象不适合或者不能直接引⽤另⼀个对…