registerExtensions method

void registerExtensions()

Registers the extension. Call once, before runApp.

Implementation

void registerExtensions() {
  GuestExtensions.register('ext.flutterware.showEntry', (_, args) async {
    var before = _state?.entryId;
    var showing = show(args['id'] ?? '');
    if (showing != before) {
      // Both halves, for the reason `imagesSettled` gives: this guest is
      // headless and draws when something asks, so marking the tree dirty is
      // not by itself a frame. Answered only once that frame is on screen —
      // a reply that came back first would have the host reading the
      // previous entry's errors under this entry's name.
      SchedulerBinding.instance.scheduleFrame();
      await SchedulerBinding.instance.endOfFrame.timeout(
        const Duration(seconds: 2),
        onTimeout: () {},
      );
    }
    return developer.ServiceExtensionResponse.result(
      jsonEncode({'entry': showing}),
    );
  });
}