init static method

Future<void> init(
  1. dynamic onFontLoaded(
    1. int,
    2. String,
    3. ByteData,
    4. int,
    ),
  2. dynamic onError(
    1. int,
    2. String,
    3. int
    )
)

تهيئة 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;
}