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() {
  _subscription = _callService.calls.changes.listen((event) async {
    Log.debug(
      '_callService.calls.changes -> ${event.op}: key(${event.key}), value(${event.value?.value})',
      '$runtimeType',
    );

    switch (event.op) {
      case OperationKind.added:
        if (event.key == null || event.value == null) {
          Log.error(
            '_callService.calls.changes -> ${event.op} -> Unreachable situation with `null`s: `${event.key}` or ${event.value}',
            '$runtimeType',
          );
          return;
        }

        await _handleAddedCall(event.key!, event.value!);
        break;

      case OperationKind.removed:
        if (event.key == null) {
          Log.error(
            '_callService.calls.changes -> ${event.op} -> Unreachable situation with `null` at: `${event.key}`',
            '$runtimeType',
          );
          return;
        }

        _handleCallRemoved(event.key!, event.value);
        break;

      case OperationKind.updated:
        // No-op.
        break;
    }
  });

  // Account the calls that are already present in the service.
  for (var e in _callService.calls.entries) {
    _handleAddedCall(e.key, e.value);
  }

  super.onInit();
}