Flutter单例写法
2019-05-29 本文已影响0人
xmb
- 使用方式
UserManager.instance.user
或
new UserManager().user
- 具体实现
import 'package:moka_flutter/pages/login/model/user.dart';
// 用户单例
class UserManager {
// 如果一个函数的构造方法并不总是返回一个新的对象的时候,可以使用factory,
// 比如从缓存中获取一个实例并返回或者返回一个子类型的实例
// 工厂方法构造函数
factory UserManager() => _getInstance();
// instance的getter方法,通过UserManager.instance获取对象
static UserManager get instance => _getInstance();
// 静态变量_instance,存储唯一对象
static UserManager _instance;
// 私有的命名式构造方法,通过它可以实现一个类可以有多个构造函数,
// 子类不能继承internal不是关键字,可定义其他名字
UserManager._internal() {
// 初始化
user = new User(false, "", "", "", "", false, "", false, "", "");
}
// 获取对象
static UserManager _getInstance() {
if (_instance == null) {
// 使用私有的构造方法来创建对象
_instance = new UserManager._internal();
}
return _instance;
}
// 用户对象
User user;
}