init static method
تهيئة Isolate لتحميل الخطوط
Implementation
static Future<void> init(Function(int, String, ByteData, int) onFontLoaded,
Function(int, String, int) onError) async {
if (_fontLoaderIsolate != null) {
return _readyCompleter?.future;
}
_readyCompleter = Completer<void>();
_fontLoaderIsolate = await Isolate.spawn(
fontLoaderIsolate,
_fontLoaderReceivePort.sendPort,
debugName: 'FontLoaderIsolate',
);
_fontLoaderReceivePort.listen((dynamic message) {
if (message is SendPort) {
_fontLoaderSendPort = message;
if (!_readyCompleter!.isCompleted) {
_readyCompleter!.complete();
}
} else if (message is Map) {
final pageIndex = message['pageIndex'] as int;
final fontName = message.containsKey('fontName')
? message['fontName'] as String
: '';
final fontBytes = message['fontBytes'] as ByteData?;
final error = message['error'] as String?;
final generation = message['generation'] as int;
if (error != null) {
onError(pageIndex, error, generation);
} else if (fontBytes != null) {
onFontLoaded(pageIndex, fontName, fontBytes, generation);
}
}
});
return _readyCompleter!.future;
}