initFont static method
初始化全局默认字体
Implementation
static Future<void> initFont(FontModel fontModel) async {
var localStr = localStorage.getItem(_localKey);
// 第一次加载
if (localStr == null) return await _initFont(fontModel);
// 获取本地初始化的字体,如果本地初始化的字体和传递的fontModel不一致,说明用户更改了fontModel,
// 那么我们需要重新加载用户传递的fontModel
var initialLocalStr = localStorage.getItem(_initialLocalKey);
if (initialLocalStr == null) {
_initialFont = fontModel;
localStorage.setItem(_initialLocalKey, jsonEncode(_initialFont.toJson()));
} else {
_initialFont = FontModel.fromJson(
(jsonDecode(initialLocalStr) as Map).cast<String, dynamic>(),
);
if (_initialFont.fontFamily != fontModel.fontFamily) {
_initialFont = fontModel;
localStorage.setItem(
_initialLocalKey,
jsonEncode(_initialFont.toJson()),
);
return await _initFont(fontModel);
}
}
try {
FontModel localFontModel = FontModel.fromJson(
(jsonDecode(localStr) as Map).cast<String, dynamic>(),
);
await loadFont(localFontModel);
} catch (error) {
logger.e(error, '本地缓存字体加载异常');
await _initFont(fontModel);
}
}