create method Null safety

Future<void> create()

Implementation

Future<void> create() async {
  try {
    String transaction = getUuid().v4();
    Map<String, dynamic> request = {"janus": "create", "transaction": transaction, ..._context._tokenMap, ..._context._apiMap};
    Map<String, dynamic>? response;
    if (_transport is RestJanusTransport) {
      RestJanusTransport rest = (_transport as RestJanusTransport);
      response = (await rest.post(request)) as Map<String, dynamic>?;
      if (response != null) {
        if (response.containsKey('janus') && response.containsKey('data')) {
          _sessionId = response['data']['id'];
          rest.sessionId = sessionId;
        }
      } else {
        throw "Janus Server not live or incorrect url/path specified";
      }
    } else if (_transport is WebSocketJanusTransport) {
      WebSocketJanusTransport ws = (_transport as WebSocketJanusTransport);
      if (!ws.isConnected) {
        ws.connect();
      }
      ws.sink!.add(stringify(request));
      response = parse(await ws.stream.firstWhere((element) => (parse(element)['transaction'] == transaction)));
      if (response!.containsKey('janus') && response.containsKey('data')) {
        _sessionId = response['data']['id'] as int?;
        ws.sessionId = sessionId;
      }
    }
    _keepAlive();
  } on WebSocketChannelException catch (e) {
    throw "Connection to given url can't be established\n reason:-" + e.message!;
  } catch (e) {
    throw "Connection to given url can't be established\n reason:-" + e.toString();
  }
}