当前位置: 首页 > news >正文

第一百一十三回 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方法"相关的内容就介绍到这里,欢迎大家在评论区交流与讨论!

http://www.lryc.cn/news/123908.html

相关文章:

  • 搭建Docker环境
  • 微服务08-多级缓存
  • Intel汇编和ATT汇编的区别?
  • MongoDB 备份与恢复
  • 探讨uniapp的网络通信问题
  • 【左神算法刷题班】第18节:汉诺塔问题、岛屿问题、最大路径和问题
  • 网络安全体系架构介绍
  • JSP实训项目设计报告—MVC简易购物商城
  • 41、可靠传输——停等ARQ
  • RK3568 cmake编译
  • 详细安装配置django
  • HTTP之cookie基础学习
  • 观察者模式和发布订阅模式
  • 利用ViewModel和LiveData进行数据管理
  • 前后端分离------后端创建笔记(05)用户列表查询接口(下)
  • 浅谈GIS和三维GIS的区别?
  • ArcGIS Maps SDK for JavaScript系列之三:在Vue3中使用ArcGIS API加载三维地球
  • 设计列表和超链接
  • rust包跨平台编译,macbook ,linux
  • JAVA集合-List
  • Python|OpenCV-绘制图形和添加文字的方法(2)
  • 使用GO编译wasm文件并在nodejs中使用
  • BM22 比较版本号
  • 【Java】Maven配置文件帮助文档(settings.xml 和 pom.xml)
  • 人脸识别技术应用安全管理规定(试行)
  • FPGA应用学习-----FIFO双口ram解决时钟域+asic样机的时钟选通
  • zabbix案例--zabbix监控Tomcat
  • Electron 应用实现截图并编辑功能
  • 前端= 结构(HTML)+ 样式(CSS)+ 行为(JavaScript)
  • Flink-网络流控及反压剖析