第一百一十三回 dart中的getter/setter方法
文章目录
- 概念介绍
- 使用方法
- 示例代码
- 使用扩展
我们在上一章回中介绍了
flutter_screenutil包相关的内容,本章回中将介绍
dart中的setter/getter方法.闲话休提,让我们一起Talk Flutter吧。
概念介绍
我们在这里介绍的setter/getter方法属于编程语言中的知识,现代编程语言都支持这两种方法,而且会自动生成,dart也支持这两种方法,但是不会自动生成。
使用这两种方法可以方便开发人员修改和获取类中的属性值。在程序开发中,这两种方法使用十分广泛。比如我们在前面章回中介绍的数据共享,以及屏幕适配包中源代码都使用了这两种方法,只是当时我们没有介绍而已,本章回中将详细介绍这两种方法的使用方法。
使用方法
我们先介绍settter/getter方法的语法,详细如下:
`set FuncName(Type){};Type get FuncName{};`
语法中的Type表示属性的类型,FuncName表示方法的名字,比较奇怪的是这两个方法的名字尽然可以相同,使用IDE自动生成setter/getter方法时就会创建相同名字的方法。
语法中的set和get是语法关键字,创建这两个方法时关键字不能少,使用关键字后getter方法名后面就没有括号了,这是和其它编程语言不同的地方。
示例代码
class ViewModel extends ChangeNotifier {late int _intData;late String _data;ViewModel() {_intData = 0;_data = 'init data';}int get intData => _intData;set intData(int value) {_intData = value;}String get getData {return _data;}set setData(String value) {_data = value;}
}
上面的示例代码中包含两个属性,我们给这两个属性创建了setter/getter方法,其中intData属性的方法是IDE自动生成的,而data属性的方法是自己手写的。此外,getter方法中还可以使用dart的语法糖箭头,这样可以使代码简洁一些。
使用扩展
在实际项目中getter方法还有另外一种扩展使用的方法,我也是在适配屏幕包中的源代码中看到的,下面是示例代码:
///使用extension语法对double进行扩展,这样就可以使用2.0.w这样的语法来做适配,使的代码更加简洁
///这个语法参考了screenutil包中的语法,因为该包中有这样的使用方法。
extension DoubleExtension on double {double get w {return XScreenUtil.setFitRatio(this);}
}
上面的代码中使用extension语法扩展了基础类double中的方法,相当于添加了一个名叫w的getter方法。在程序中的其它地方可以使用double对象.w这样的语法来使用getter方法,这种代码初次看时不好理解,使用多了反而会觉得很方便。
看官们,关于"dart中的setter/getter方法"相关的内容就介绍到这里,欢迎大家在评论区交流与讨论!
相关文章:
第一百一十三回 dart中的getter/setter方法
文章目录 概念介绍使用方法示例代码使用扩展 我们在上一章回中介绍了 flutter_screenutil包相关的内容,本章回中将介绍 dart中的setter/getter方法.闲话休提,让我们一起Talk Flutter吧。 概念介绍 我们在这里介绍的setter/getter方法属于编程语言中的…...
搭建Docker环境
目录 一、docker环境搭建 1、卸载旧版本docker 2、安装依赖和设置仓库 3、安装docker 4、启动并加入开机启动 5、验证是否安装成功 二、利用docker搭建nginx 1、拉取镜像 2、启动容器,部署nginx 一、docker环境搭建 1、卸载旧版本docker yum remove docke…...
微服务08-多级缓存
1.什么是多级缓存 传统的缓存策略一般是请求到达Tomcat后,先查询Redis,如果未命中则查询数据库,如图: 存在下面的问题: •请求要经过Tomcat处理,Tomcat的性能成为整个系统的瓶颈 •Redis缓存失效时,会对数据库产生冲击 多级缓存就是充分利用请求处理的每个环节,分…...
Intel汇编和ATT汇编的区别?
一、前缀不同 在 Intel 语法中,没有寄存器前缀或立即前缀。 然而,在 AT&T 中,寄存器的前缀是“%”,而 immed 的前缀是“$”。 Intel 语法十六进制或二进制即时数据分别带有“h”和“b”后缀。 此外,如果第一个十六…...
MongoDB 备份与恢复
1.1 MongoDB的常用命令 mongoexport / mongoimport mongodump / mongorestore 有以上两组命令在备份与恢复中进行使用。 1.1.1 导出工具mongoexport Mongodb中的mongoexport工具可以把一个collection导出成JSON格式或CSV格式的文件。可以通过参数指定导出的数据项,…...
探讨uniapp的网络通信问题
uni-app 中有很多原生的 API,其中我们经常会用到的肯定有:uni.request(OBJECT) method 有效值 注意:method有效值必须大写,每个平台支持的method有效值不同,详细见下表。 success 返回参数说明 data 数据说明 最终…...
【左神算法刷题班】第18节:汉诺塔问题、岛屿问题、最大路径和问题
第18节 题目1:汉诺塔问题(变体) 体系学习班18节有讲暴力递归的汉诺塔原题。 给定一个数组arr,长度为N,arr中的值只有1,2,3三种 arr[i] 1,代表汉诺塔问题中,从上往下第…...
网络安全体系架构介绍
网络安全体系是一项复杂的系统工程,需要把安全组织体系、安全技术体系和安全管理体系等手段进行有机融合,构建一体化的整体安全屏障。针对网络安全防护,美国曾提出多个网络安全体系模型和架构,其中比较经典的包括PDRR模型、P2DR模…...
JSP实训项目设计报告—MVC简易购物商城
JSP实训项目设计报告—MVC简易购物商城 文章目录 JSP实训项目设计报告—MVC简易购物商城设计目的设计要求设计思路系统要求单点登录模块商品展示模块购物车展示模块 概要设计Model层View层Controller层 详细设计Model层View层登录界面系统主界面 Controller层 系统运行效果项目…...
41、可靠传输——停等ARQ
前面两节内容我们学习了传输层的基本概况的一些知识,包括传输层在TCP/IP协议栈中负责的任务、传输层的两大协议,以及端口号、套接字等一些基本的概念。从这一节开始,我们将开启两大协议中TCP协议的学习。 但是,经过之前的学习&am…...
RK3568 cmake编译
一.简介 CMake是开源、跨平台的构建工具,可以让我们通过编写简单的配置文件去生成本地的Makefile,这个配置文件是独立于运行平台和编译器的,这样就不用亲自去编写Makefile了,而且配置文件可以直接拿到其它平台上使用,…...
详细安装配置django
安装配置使用Django。 1,下载安装 django pip install django 2.创建设置项目 先进入要放置项目的文件夹下 2.1, 创建项目 django-admin startproject Api_project 2.2, 创建app命令 cd Api_project dir看一下是否有 manage.py 文件…...
HTTP之cookie基础学习
目录 Cookie 什么是Cookie Cookie分类 Cookie版本 Cookie工作原理 Cookie详解 创建cookie cookie编码 cookie过期时间选项 Cookie流程 Cookie使用 会话管理 个性化信息 记录用户的行为 Cookie属性 domain选项 path选项 secure选项 cookie…...
观察者模式和发布订阅模式
观察者模式与发布订阅模式的区别: 1、观察者模式中只有观察者和被观察者,发布订阅模式中有发布者、订阅者、调度中心 2、观察者模式是被观察者发生变化时自己通知观察者,发布订阅模式是通过调度中心来进行分布订阅操作 发布订阅模式 class …...
利用ViewModel和LiveData进行数据管理
利用ViewModel和LiveData进行数据管理 1. 引言 在当今移动应用开发的世界中,数据管理是一个至关重要的方面。随着应用的复杂性不断增加,需要有效地管理和维护应用中的数据。无论是从服务器获取数据、本地数据库存储还是用户界面的状态,数据…...
前后端分离------后端创建笔记(05)用户列表查询接口(下)
本文章转载于【SpringBootVue】全网最简单但实用的前后端分离项目实战笔记 - 前端_大菜007的博客-CSDN博客 仅用于学习和讨论,如有侵权请联系 源码:https://gitee.com/green_vegetables/x-admin-project.git 素材:https://pan.baidu.com/s/…...
浅谈GIS和三维GIS的区别?
GIS(地理信息系统)和三维GIS(3D地理信息系统)是地理信息领域的两个重要概念,它们在地理数据的处理和分析方面具有不同的特点和应用。可能很多人分不清二者的区别,本文就带大家简单了解一下二者的区别。 定义…...
ArcGIS Maps SDK for JavaScript系列之三:在Vue3中使用ArcGIS API加载三维地球
目录 SceneView类的常用属性SceneView类的常用方法vue3中使用SceneView类创建三维地球项目准备引入ArcGIS API创建Vue组件在OnMounted中调用初始化函数initArcGisMap创建Camera对象Camera的常用属性Camera的常用方法 要在Vue 3中使用ArcGIS API for JavaScript加载和展示三维地…...
设计列表和超链接
在网页中,大部分信息都是列表结构,如菜单栏、图文列表、分类导航、新闻列表、栏目列表等。HTML5定义了一套列表标签,通过列表结构实现对网页信息的合理排版。另外,网页中还包含大量超链接,通过它实现网页、位置的跳转&…...
rust包跨平台编译,macbook ,linux
在 MacBook 上编译 Rust 项目并生成 Linux 包需要一些步骤。以下是一般的步骤概述: 1. **安装所需工具:** 首先,确保您的 MacBook 上已经安装了所需的工具。您需要 Rust 编程语言的工具链以及一些用于交叉编译到 Linux 的工具。 - 安装 R…...
告别繁琐下载:一键获取国家中小学智慧教育平台电子教材的智能解决方案
告别繁琐下载:一键获取国家中小学智慧教育平台电子教材的智能解决方案 【免费下载链接】tchMaterial-parser 国家中小学智慧教育平台 电子课本下载工具,帮助您从智慧教育平台中获取电子课本的 PDF 文件网址并进行下载,让您更方便地获取课本内…...
Java实战:手把手教你给JPG、PNG、GIF图片批量添加AIGC隐式水印(附完整代码)
Java实战:批量处理图片隐式水印的工程化解决方案 在数字内容爆炸式增长的时代,如何有效标识和管理AIGC生成内容成为开发者面临的新挑战。本文将深入探讨Java环境下批量处理JPG、PNG、GIF图片隐式水印的完整技术方案,从原理分析到实战代码&…...
OmenSuperHub终极指南:掌控惠普游戏本性能与散热的完整解决方案
OmenSuperHub终极指南:掌控惠普游戏本性能与散热的完整解决方案 【免费下载链接】OmenSuperHub 使用 WMI BIOS控制性能和风扇速度,自动解除DB功耗限制。 项目地址: https://gitcode.com/gh_mirrors/om/OmenSuperHub 你是否曾因惠普游戏本过热降频…...
WinUtil:Windows系统管理工具让用户实现高效系统维护与优化
WinUtil:Windows系统管理工具让用户实现高效系统维护与优化 【免费下载链接】winutil Chris Titus Techs Windows Utility - Install Programs, Tweaks, Fixes, and Updates 项目地址: https://gitcode.com/GitHub_Trending/wi/winutil 问题诊断:…...
像素自由:SRWE实现窗口分辨率精准控制的技术突破与行业应用
像素自由:SRWE实现窗口分辨率精准控制的技术突破与行业应用 【免费下载链接】SRWE Simple Runtime Window Editor 项目地址: https://gitcode.com/gh_mirrors/sr/SRWE 一、场景痛点:分辨率限制下的创作困境 在数字内容创作领域,窗口分…...
Qwen3-14B镜像惊艳效果:复杂SQL生成+数据库Schema理解实测
Qwen3-14B镜像惊艳效果:复杂SQL生成数据库Schema理解实测 1. 开篇:当大模型遇上数据库 想象一下这样的场景:你刚接手一个陌生的数据库系统,面对几十张表、上百个字段,却需要快速写出复杂的多表关联查询。传统方式可能…...
如何构建跨平台漫画阅读器Venera:从零开始实现本地与网络漫画管理
如何构建跨平台漫画阅读器Venera:从零开始实现本地与网络漫画管理 【免费下载链接】venera A comic app 项目地址: https://gitcode.com/gh_mirrors/ve/venera 作为一名漫画爱好者,你是否曾为找不到合适的阅读工具而烦恼?本地漫画文件…...
OpenClaw+千问3.5-35B-A3B-FP8:个人内容助手从写作到配图全流程
OpenClaw千问3.5-35B-A3B-FP8:个人内容助手从写作到配图全流程 1. 为什么需要自动化内容生产 去年我开始运营技术博客时,每周要花5-6小时在内容生产上:从构思大纲、撰写初稿到寻找配图,最后还要手动调整Markdown格式。直到发现O…...
GD32450i-EVAL开发实战:TLI接口配置与双图层应用解析
1. GD32450i-EVAL开发板与TLI接口初探 第一次拿到GD32450i-EVAL开发板时,那块480x272的RGB屏幕立刻吸引了我的注意。作为GD32F450芯片的官方评估板,它内置的TLI(TFT-LCD Interface)接口让图形显示开发变得异常简单。TLI接口本质上…...
Seed-Coder-8B-Base案例分享:这些实用代码片段都是AI写的
Seed-Coder-8B-Base案例分享:这些实用代码片段都是AI写的 1. 引言:AI编程助手的崛起 在软件开发领域,一个革命性的变化正在发生:AI代码生成工具正从简单的补全功能,进化成为真正的编程伙伴。Seed-Coder-8B-Base作为一…...
