Flutter基础语法(六)var、final、const、late
Flutter基础
第六章 Flutter关键字var、final、const、late的区别与使用
文章目录
- Flutter基础
- 前言
- 一、var
- 1.var是什么?
- 2.var如何使用
- 3.var自动推断类型
- 4.var可以再次赋值
- 5.var指定类型
- 二、final
- 1.final是什么?
- 2.final声明但不赋值
- 3.final赋值多次
- 4.final正常使用
- 三、const
- 1.const是什么?
- 2.const声明但不赋值
- 3.const赋值多次
- 4.const正常使用
- 三、late
- 1.late是什么?
- 2.late声明但不赋值
- 3.const赋值多次
- 4.const正常使用
- 总结
前言
在使用flutter开发已经有一段时间了,在之前都是快速开发,没有时间去复盘自己的知识体系,现在就从flutter的基本语法开始,一步步分析flutter涉及到的细节问题,希望对你有所帮助。
一、var
1.var是什么?
- var就是定义变量的意思。
- var定义的变量会自动推断类型
- dart 中使用 var声明变量,可以赋值不同类型的值,会自动推断变量的类型。
- var 声明的变量如果没有初始化,那么它的值是nil
2.var如何使用
var 声明的变量,如果没有指定类型,是一个dynamic动态类型
var a;
print("打印==${a.runtimeType}");//打印==Nullvar b;
b = "hello world";
print("打印==$b");//打印==hello world
print("打印==${b.runtimeType}");//打印==String
3.var自动推断类型
var b;
b = true;
print("打印==$b"); //打印==true
print("打印==${b.runtimeType}"); //打印==bool
4.var可以再次赋值
本来是bool类型的,后面变成了int类型
var b;
b = true;
print("打印==$b"); //打印==true
print("打印==${b.runtimeType}"); //打印==boolb = 100;
print("打印==$b"); //打印==100
print("打印==${b.runtimeType}"); //打印==int
5.var指定类型
在声明时候就赋值,则相当于指定类型,如果再赋值其他类型会报错
var b = 100;
b = true;//Error: A value of type 'bool' can't be assigned to a variable of type 'int'.b = true;print("打印==$b"); //打印==true
print("打印==${b.runtimeType}"); //打印==bool
二、final
1.final是什么?
- 使用final声明的变量,它只能赋值一次。
- final修饰的是一个最终的变量,不能再次赋值,否则会报错
- 可以先声明再次赋值,但是只能赋值一次
2.final声明但不赋值
final声明的变量,如果不赋值,则无法使用,如runtimeType等方法。
final a;//The final variable 'a' can't be read because it's potentially unassigned at this point
print("打印==${a.runtimeType}");//报错
3.final赋值多次
final声明的变量,不能多次赋值,否则报错。
final a;
a = 100;
a = 'hello world';//Final variable 'a' might already be assigned at this point.a = 'hello world';
print("打印==${a.runtimeType}"); //
4.final正常使用
final a = 100;
print("打印==$a"); //打印==100
print("打印==${a.runtimeType}"); //打印==int
三、const
1.const是什么?
- const修饰常量,声明的时候就得赋值,这也是和变量最大的区别
2.const声明但不赋值
声明不赋值会报错:
///lib/modules/dart/xxx.dart:20:11: Error: The const variable 'a' must be initialized.
/// Try adding an initializer ('= expression') to the declaration.
/// const a;
const a;
print("打印==$a"); //打印==100
print("打印==${a.runtimeType}"); //打印==int
3.const赋值多次
final声明的变量,不能多次赋值,否则报错。
///Error: Can't assign to the const variable 'a'.
/// a = 200;
const a = 100;
a = 200;
print("打印==$a"); //打印==100
print("打印==${a.runtimeType}"); //打印==int
4.const正常使用
const a = 100;
print("打印==$a"); //打印==100
print("打印==${a.runtimeType}"); //打印==int
三、late
1.late是什么?
- Dart 2.12引入了late修饰符
- 显式声明一个非空的变量,但不初始化
- 如果不加late关键字,类实例化时此值是不确定的,无法通过静态检查,加上late关键字可以通过静态检查,但由此会带来运行时风险
- 延迟初始化变量。如果这个变量没有被使用的话就不会被初始化,初始化语句不会执行。
2.late声明但不赋值
声明不赋值会报错:
///Error: Late variable 'a' without initializer is definitely unassigned.
/// print("打印==${a.runtimeType}"); //打印==int
late int a;
print("打印==$a"); //打印==100
print("打印==${a.runtimeType}"); //打印==int
3.const赋值多次
已经指定了类型,不能赋值别的类型
late int a;
a = 100;
a = 300;
print("打印==$a"); //打印==300
print("打印==${a.runtimeType}"); //打印==int
4.const正常使用
late int a;
a = 100;
print("打印==$a"); //打印==100
print("打印==${a.runtimeType}"); //打印==int
总结
以上就是今天要讲的内容,本文仅仅简单介绍了var、final、const、late的使用。希望文章对你有所帮助,后续继续完善。
相关文章:
Flutter基础语法(六)var、final、const、late
Flutter基础 第六章 Flutter关键字var、final、const、late的区别与使用 文章目录Flutter基础前言一、var1.var是什么?2.var如何使用3.var自动推断类型4.var可以再次赋值5.var指定类型二、final1.final是什么?2.final声明但不赋值3.final赋值多次4.final正常使用三、const1.…...
Linux之安装node
Linux之安装node步骤如下 1.去网站下载node 下载地址: https://npm.taobao.org/mirrors/ 2.上传到指定目录下 3.解压 tar -zxvf node-v17.3.0-linux-x644.配置node环境变量 //执行以下命令 vim /etc/profile //在path中加入以下内容 /usr/local/node-v15.14.0/b…...
二叉树、二叉搜索树、二叉树的最近祖先、二叉树的层序遍历【零神基础精讲】
来源0x3f:https://space.bilibili.com/206214 文章目录二叉树[104. 二叉树的最大深度](https://leetcode.cn/problems/maximum-depth-of-binary-tree/)[111. 二叉树的最小深度](https://leetcode.cn/problems/minimum-depth-of-binary-tree/)[129. 求根节点到叶节点…...
【算法】【数组与矩阵模块】求最长可整合子数组和子数组的长度
目录前言问题介绍解决方案代码编写java语言版本c语言版本c语言版本思考感悟写在最后前言 当前所有算法都使用测试用例运行过,但是不保证100%的测试用例,如果存在问题务必联系批评指正~ 在此感谢左大神让我对算法有了新的感悟认识! 问题介绍 …...
数据结构:循环队列的实现(leetcode622.设计循环队列)
目录 一.循环队列简单介绍 二.用静态数组实现循环队列 1.数组循环队列结构设计 2.数组循环队列的堆区内存申请接口 3.数据出队和入队的接口实现 4.其他操作接口 5.数组循环队列的实现代码总览 三.静态单向循环链表实现循环队列 1.链表循环队列的结构设计 2.创建静…...
[qiankun]实战问题汇总
[qiankun]实战问题汇总ERROR SyntaxError: Cannot use import statement outside a module问题分析解决方案子应用命名问题问题分析解决方案jsonpFunction详细错误信息问题分析解决方案微应用的注册问题Uncaught Error: application cli5-beta6-test-name died in status LOADI…...
Kafka(6):服务端常用参数配置
参数配置:config/server.properties # Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership.…...
2023爱分析·云原生智能运维中台市场厂商评估报告:秒云(miaoyun.io)
目录 1. 研究范围定义 2. 云原生智能运维中台市场定义 3. 厂商评估:秒云(miaoyun.io) 4. 入选证书 1. 研究范围定义 数字化时代,应用成为企业开展各项业务的落脚点。随着业务的快速发展,应用的功能迭代变得越…...
hadoop容器化部署
1、原容器 java:openjdk-8u111-jre jre路径: /usr/lib/jvm/java-8-openjdk-amd64 /usr/lib/jvm/java-1.8.0-openjdk-amd64 2、安装ssh docker run -it --name hadoop-test java:openjdk-8u111-jre bash apt-get update apt-get install openssh service ssh start …...
【07-JVM面试专题-JVM运行时数据区的虚拟机栈你知道吗?它的基本结构是什么呢?你知道栈帧的结构吗?那你说说动态链接吧?】
JVM运行时数据区的虚拟机栈你知道吗?它的基本结构是什么呢?你知道栈帧的结构吗?那你说说动态链接吧? JVM运行时数据区的虚拟机栈你知道吗?它的基本结构是什么呢?你知道栈帧的结构吗?那你说说动态…...
Java性能优化-GC优化基础
GC优化基础 调整堆大小 如果在FULL GC系统进行了交换,停顿时间会增长几个数量级,OS 如果G1 GC和后台进程处理堆,将会出现等待数据从磁盘复制到主内存时间较长,速度和下降并且并发模式可能失效 linux 关闭交换区 swapoff -a linu…...
【Tomcat】IDEA编译Tomcat源码-手把手教程
一、环境准备Tomcat不同版本之间有一定的兼容性问题~如下图所示:官网地址:https://tomcat.apache.org/whichversion.html下载tomcat9官网上面的源码:这一篇文章主要是带着大家在自己的IDEA跑起来一个Tomcat。使用的版本是Tomcat9.0.55 和 JDK…...
如何弄小程序?公司企业可以这样做小程序
公司企业现在对于小程序的需求已经是刚需了,即使已经有官网的情况下,也会考虑再弄一个小程序来做小程序官网。那么公司企业如何弄小程序呢?下面跟大家说说方法。 流程一、找小程序服务商 由于一些公司企业并不像现在的互联网公司企业那样有…...
【Git】IDEA集合Git和码云
目录 7、IDEA集合Git 7.1 配置Git忽略文件-IDEA特定文件 7.2 定位 Git 程序 7.3 初始化本地库 7.4 添加到暂存区 7.5 提交到本地库 7.6 切换版本 7.7 创建分支 7.8 切换分支 7.9 合并分支 7.10 解决冲突 8、 Idea集成码云 8.1 IDEA 安装码云插件 8.2 分析工程到码…...
[USACO03FALL / HAOI2006] 受欢迎的牛 G(C++,强连通分量)
题目背景 本题测试数据已修复。 题目描述 每头奶牛都梦想成为牛棚里的明星。被所有奶牛喜欢的奶牛就是一头明星奶牛。所有奶牛都是自恋狂,每头奶牛总是喜欢自己的。奶牛之间的“喜欢”是可以传递的——如果 AAA 喜欢 BBB,BBB 喜欢 CCC,那么…...
Vue 动态路由接口数据结构化为符合VueRouter的声明结构及菜单导航结构、动态路由懒加载方法
Vue 动态路由接口数据结构化为符合VueRouter的声明结构及菜单导航结构、动态路由懒加载方法 实现目标 项目打包代码实现按需分割路由懒加载按需打包,排除引入子组件的冗余打包(仅处理打包冗余现象,不影响生产部署)解决路由懒加载…...
Python----------字符串
1.转义字符 注:转义字符放在你所想效果字符前 2.原始字符串 print(r"D:\three\two\one\now") ->D:\three\two\one\now注: 在使用原始字符串时,转义字符不再有效,只能当作原始的字符,每个字符都没有特殊…...
日志收集笔记(架构设计、Log4j2项目初始化、Lombok)
1 架构设计 ELK 技术栈架构设计图: 从左往右看, Beats:主要是使用 Filebeat,用于收集日志,将收集后的日志数据发送给 Kafka,充当 Kafka 的生产者Kafka:高性能消息队列,主要起缓冲…...
一文教你玩转 Apache Doris 分区分桶新功能|新版本揭秘
数据分片(Sharding)是分布式数据库分而治之 (Divide And Conquer) 这一设计思想的体现。过去的单机数据库在大数据量下往往面临存储和 IO 的限制,而分布式数据库则通过数据划分的规则,将数据打散分布至不同的机器或节点上…...
数据挖掘,计算机网络、操作系统刷题笔记54
数据挖掘,计算机网络、操作系统刷题笔记54 2022找工作是学历、能力和运气的超强结合体,遇到寒冬,大厂不招人,可能很多算法学生都得去找开发,测开 测开的话,你就得学数据库,sql,orac…...
QWEN-AUDIO企业实操:金融产品语音说明书自动化生成
QWEN-AUDIO企业实操:金融产品语音说明书自动化生成 你有没有想过,金融产品那些复杂的说明书,如果能用语音讲给客户听,该有多好?客户不用再费力阅读密密麻麻的条款,开车、做家务时就能轻松了解产品。但问题…...
如何快速上手Scala Exercises:面向初学者的完整入门指南
如何快速上手Scala Exercises:面向初学者的完整入门指南 【免费下载链接】scala-exercises The easy way to learn Scala. 项目地址: https://gitcode.com/gh_mirrors/sc/scala-exercises Scala Exercises是一个基于Scala编程语言的开源交互式学习平台&#…...
用STM32F103C8T6+ESP8266做个公交车报站器,附完整电路图和代码(避坑OLED与GPS)
用STM32F103C8T6ESP8266打造高可靠性公交车报站器:从硬件选型到代码调试全指南 在智能交通系统快速发展的今天,公交车报站器作为乘客信息服务的重要载体,其稳定性和准确性直接影响出行体验。本文将带你从零开始,基于STM32F103C8T6…...
STC8H8K32U按键控制OLED显示
手动按键按下,OLED显示对应键值 气缸前进后退电机正反转本文实现了一个基于STC8H单片机的按键检测与OLED显示系统。系统通过8个独立按键输入信号,采用消抖算法检测有效按键,并在OLED屏幕上实时显示对应按键编号。程序包含OLED初始化、I2C通信协议实现、按…...
Legacy iOS Kit:让旧款iPhone/iPad重获新生的终极解决方案
Legacy iOS Kit:让旧款iPhone/iPad重获新生的终极解决方案 【免费下载链接】Legacy-iOS-Kit An all-in-one tool to restore/downgrade, save SHSH blobs, jailbreak legacy iOS devices, and more 项目地址: https://gitcode.com/gh_mirrors/le/Legacy-iOS-Kit …...
24 华夏之光永存:指挥AI添加注释与文档,让代码具备可维护性
指挥AI添加注释与文档,让代码具备可维护性 摘要 本文为《30天掌控AI编程:从指令到落地》系列第二十四篇,属第四阶段「AI代码校验与优化」核心内容。承接代码优化,本篇针对AI生成代码无注释、缺文档、难维护的痛点,教你用精准指令,让AI快速补充专业注释、完整接口/函数文…...
启程代码学习之旅
文章目录一.自我介绍二.编程目标三.怎么样学习编程四.每周花费多少时间学习编程五.我最想进入的IT公司总结一.自我介绍 本人是一个二本院校大一的学生,专业是机械专业,智能制造工程,因为大二要学单片机51和stm32,所以开始跟老师学…...
Obsidian插件实战:5个提升笔记效率的神器(附避坑指南)
Obsidian插件实战:5个提升笔记效率的神器(附避坑指南) 如果你正在寻找能够真正提升Obsidian笔记效率的插件组合,这篇文章将为你揭示5个经过实战检验的效率神器。不同于泛泛而谈的插件列表,我们聚焦于那些能够形成工作…...
002、现代Python后端开发环境与工具链搭建
002、现代Python后端开发环境与工具链搭建 上周排查一个线上问题,日志里报了个ImportError: cannot import name ... from partially initialized module。花了半小时才发现,是同事本地虚拟环境混用了Python 3.8和3.10的依赖,打包时没锁版本。…...
CSMS详细学习,CIA网络安全接口协议和CSMS的关系
CSMS详细学习,CIA网络安全接口协议和CSMS的关系 一、CSMS的定义与核心目标 CSMS(Cybersecurity Management System) 是由 UN R155法规 强制要求建立的一套组织级网络安全管理体系。其本质是通过制度化的流程、策略和资源分配,确保…...
