第二百六十二回

发布时间:2024年01月12日


我们在上一章回中介绍了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方法"相关的内容就介绍到这里,欢迎大家在评论区交流与讨论!

文章来源:https://blog.csdn.net/talk_8/article/details/135563350
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。