ensureInitialized static method

void ensureInitialized(
  1. RootIsolateToken token
)

Ensures that BackgroundIsolateBinaryMessenger.instance has been initialized.

The argument should be the value obtained from ServicesBinding.rootIsolateToken on the root isolate.

This function is idempotent (calling it multiple times is harmless but has no effect).

Implementation

static void ensureInitialized(ui.RootIsolateToken token) {
  if (_instance == null) {
    ui.PlatformDispatcher.instance.registerBackgroundIsolate(token);
    final BackgroundIsolateBinaryMessenger portBinaryMessenger =
        BackgroundIsolateBinaryMessenger._();
    _instance = portBinaryMessenger;
    portBinaryMessenger._receivePort.listen((dynamic message) {
      try {
        final List<dynamic> args = message as List<dynamic>;
        final int identifier = args[0] as int;
        final Uint8List bytes = args[1] as Uint8List;
        final ByteData byteData = ByteData.sublistView(bytes);
        portBinaryMessenger._completers
            .remove(identifier)!
            .complete(byteData);
      } catch (exception, stack) {
        FlutterError.reportError(FlutterErrorDetails(
          exception: exception,
          stack: stack,
          library: 'services library',
          context:
              ErrorDescription('during a platform message response callback'),
        ));
      }
    });
  }
}