Ben*_*min 4 singleton dart flutter
我正在使用get_it包,你有两个选项来注册单例,lazy 和我猜是“常规”(GetIt.instance.registerLazySingleton
和GetIt.instance.registerSingleton
分别)这是注册为普通单例的类之一:
class AndroidDetails {
static final DeviceInfoPlugin _deviceInfoPlugin = DeviceInfoPlugin();
Map<String, dynamic> _deviceData = {};
AndroidDetails() {
_init().then((_) => getIt.signalReady(this));
}
Future<void> _init() async {
try {
AndroidDeviceInfo _deviceInfo = await deviceInfoPlugin.androidInfo;
_deviceData = _getDeviceData(_deviceInfo);
} on PlatformException {
_deviceData = <String, dynamic>{
'Error:': 'Failed to get platform version.',
};
}
}
Map<String, dynamic> _getDeviceData(AndroidDeviceInfo build) {
return <String, dynamic>{
'version.sdkInt': build.version.sdkInt,
};
}
bool canChangeStatusBarColor() {
if (_deviceData.isNotEmpty) {
return _deviceData['version.sdkInt'] >= 21;
}
return null;
}
bool canChangeNavbarIconColor() {
if (_deviceData.isNotEmpty) {
return _deviceData['version.sdkInt'] >= 27;
}
return null;
}
}
Run Code Online (Sandbox Code Playgroud)
它是如何注册的:
// main.dart
getIt.registerSingleton<AndroidDetails>(AndroidDetails(), signalsReady: true);
Run Code Online (Sandbox Code Playgroud)
我的问题是,Dart 和 get_it 包中的“普通”单身人士和懒惰单身人士有什么区别?
归档时间: |
|
查看次数: |
3794 次 |
最近记录: |