onInit method

  1. @override
void onInit()
override

Called immediately after the widget is allocated in memory. You might use this to initialize something for the controller.

Implementation

@override
void onInit() {
  SchedulerBinding.instance.addPostFrameCallback(
    (_) => WebUtils.deleteLoader(),
  );

  if (router.byLink) {
    final String? slug = router.initial?.uri.path.replaceFirst(
      Routes.directLink,
      '',
    );

    if (slug != null) {
      _slug = DirectLinkSlug(slug);
      _scheduleChat();
    }
  } else {
    _scheduleSupport();
  }

  final ModalRoute dummyRoute = RawDialogRoute(
    pageBuilder: (_, _, _) => const SizedBox(),
  );

  bool hasRoute = false;
  _opacityWorker = ever(opacity, (d) {
    final bool shouldRoute = d > 0;

    if (hasRoute != shouldRoute) {
      hasRoute = shouldRoute;
      if (hasRoute) {
        router.obscuring.add(dummyRoute);
      } else {
        router.obscuring.remove(dummyRoute);
      }
    }
  });

  opacity.value = _authService.userId.isLocal ? 1 : 0;

  String previous = router.route;
  _routesWorker = ever(router.routes, (routes) {
    final String last = routes.lastOrNull ?? '';

    if (last != previous) {
      Log.debug('_routesWorker -> `last` is `$last`', '$runtimeType');
      if (last.startsWith(Routes.directLink)) {
        final String slug = last.replaceFirst(Routes.directLink, '');

        if (slug.isNotEmpty) {
          _slug = DirectLinkSlug(slug);
          _scheduleChat(route: last);
        }
      }

      previous = last;
    }
  });

  super.onInit();
}