图⽂详解Flutter单例的实现
⽬录
前⾔
创建单例
测试单例效果
测试⼀
测试⼆
总结
前⾔
作为最简单的⼀种设计模式之⼀,对于单例本⾝的概念,⼤家⼀看就能明⽩,但在某些情况下也很容易使⽤不恰当。相⽐其他语⾔,Dart 和 Flutter 中的单例模式也不尽相同,本篇⽂章我们就⼀起探究看看它在 Dart 和 Flutter 中的应⽤。
Flutter(able) 的单例模式
⼀般来说,要在代码中使⽤单例模式,结构上会有下⾯这些约定俗成的要求:
flutter dio单例类(Singleton)中包含⼀个引⽤⾃⾝类的静态属性实例(instance),且能⾃⾏创建这个实例。
该实例只能通过静态⽅法 getInstance() 访问。
类构造函数通常没有参数,且被标记为私有,确保不能从类外部实例化该类。
回顾iOS,单例的写法如下:
static JXWaitingView *shared;
+(JXWaitingView*)sharedInstance{
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
shared=[[JXWaitingView alloc]initWithTitle:nil];
});
return shared;
}
其⽬的是通过dispatch_once来控制【初始化⽅法】只会执⾏⼀次,然后⽤static修饰的对象来接收并返回它。所以核⼼是只会执⾏⼀次初始化。
创建单例
创建单例的案例
class Student {
String? name;
int? age;
//构造⽅法
Student({this.name, this.age});
// 单例⽅法
static Student? _dioInstance;
static Student instanceSingleStudent() {
if (_dioInstance == null) {
_dioInstance = Student();
}
return _dioInstance!;
}
}
测试单例效果
测试⼀
import 'package:flutter_async_programming/Student.dart';
void main() {
Student studentA = Student.instanceSingleStudent();
studentA.name = "张三";
Student studentB = Student.instanceSingleStudent();
print('studentA姓名是${studentA.name}');
print('studentB姓名是${studentB.name}');
}
运⾏效果
测试⼆
import 'package:flutter_async_programming/Student.dart';
void main() {
Student studentA = Student.instanceSingleStudent();
studentA.name = "张三";
Student studentB = Student.instanceSingleStudent();
studentB.name = "李四";
print('studentA姓名是${studentA.name}');
print('studentB姓名是${studentB.name}');
}
运⾏效果
总结
到此这篇关于Flutter单例实现的⽂章就介绍到这了,更多相关Flutter单例实现内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论