小常识,大挑战!本文正在参加“程序员必备小常识”创造活动。
本文一起参加「掘力星方案」,赢取创造大礼包,挑战创造鼓励金。
【Flutter】学习养成记,【程序员必备小常识】
今天小常识——【Flutter】Dart
中的工厂结构办法&单例目标&初始化列表!
1. 写在前面
在上篇文章中介绍了Dart
中的结构函数,那么现在就持续来学习 Dart
的工厂结构
&单例目标
&初始化列表
。
【Flutter】苹果Mac电脑配置flutter开发环境
【Flutter】 Android Studio 安装第三方模拟器—网易MuMu
【Flutter】项目运转报错Failed to find Build Tools revision 29.0.2
【Flutter】flutter doctor 报错Android license status unknown. Run `flutter doctor –android-licenses‘
【Flutter】如何新建项目,运转你的第一个 flutter 工程项目
【Flutter】Dart中的var、final 和 const基本使用
【Flutter】Dart数据类型之num
【Flutter】Dart数据类型之String
【Flutter】Dart的数据类型list&Map(数组和字典)
【Flutter】Dart的办法与箭头函数
【Flutter】Dart的办法中的可选参数、办法作为参数传递
【Flutter】Dart中的匿名函数、闭包
【Flutter】Dart中的类和目标
【Flutter】Dart中的结构函数
2. 单例目标
许多时候,我们需求使用单例,那么怎么样创立一个单例呢?我们试试去创立一下。
class FactoryClass{
final name;
final age;
const FactoryClass(this.name,this.age);
}
用
final
润饰所有的特点,这样的方式行不可呢?试试看吧!
FactoryClass fact1 = FactoryClass("reno", 18);
FactoryClass fact2 = FactoryClass("jp", 20);
print(fact1 == fact2);
打印成果的成果为false
,所有这样是不可的。
- 工厂结构办法
要使用return
返回的话,办法前面有必要加factory
,表示工厂结构办法。由于没有返回值,你这儿要返回就的用factory
。
class FactoryClass{
static FactoryClass? _instance;
factory FactoryClass() {
// if(_instance == null){
// _instance = FactoryClass._init();
// }
_instance ??= FactoryClass._init();
return _instance;
}
//私有的结构命名函数
FactoryClass._init();
}
上面应该是在
dart 2.0
语法之前的写法,会报错,如下:
过错:“
FactoryClass?
”类型的值 无法从返回类型为“FactoryClass
”的函数中返回,由于“FactoryClass?
” 可认为空,而 ‘FactoryClass
‘ 不是。
如过你非要这么写单例,在 2.0
之后不报错的话,加个感叹号!
,类似于 Swift
中的解包,保证对错空的。
return _instance!;
- 创立两个目标对比一下 从打印成果来看,两个目标是相同的,说明是单例目标。
比较好的写法,如下:
class FactoryClass{
//保存单例
static final FactoryClass _instance = FactoryClass._init();
//私有的结构函数
FactoryClass._init();
//工厂结构函数
factory FactoryClass()=>_instance;
}
- 测试单例
完美运转,成果也是相同的。
3. 初始化列表
定义一个车的类 Car
,特点分别为,车的名称,价格,高度。
class Car {
String name;
double price;
final height;
//结构办法
Car(this.name,this.price,double h):height = h,
assert(h>=0),assert(price>0){
print("name:$name price:$price height:$height");
}
}
如上代码中,结构办法的冒号:
后面便是初始化列表,能够使用assert
校验特点的值,如果不合规就会报错,如下:
那么按提示的要求改下就好了,也便是到达校验的意图!
初始化列表的意图:
- 给 final 变量赋值
- 校验传递的值
4. 写在后面
重视我,更多内容持续输出
- CSDN
- 简书
喜爱就点个赞吧
觉得有收获的,能够来一波 保藏+重视,避免你下次找不到我
欢迎大家留言沟通,批评指正,
转发
请注明出处,谢谢支撑!