Twilio Join Room TypeError: Cannot read properties of null (reading 'Symbol(dartx.toLowerCase)')

80 views Asked by At

I am implementing video call using the twilio_programmable_video package in my flutter app. I have managed to manually create a access token via Twilio's console and hardcoded it to the app and i am able to join/create a room on flutter web. However, shortly after joining the room, i get this error:

TypeError

Below is my codes. I have not implemented the localtracks to show the screen view yet:

late Room _room;
final Completer<Room> _completer = Completer<Room>();

Future<Room> connectToRoom() async {
  await TwilioProgrammableVideo.debug(dart: true, native: true);
  // // Create an audio track.
  // var localAudioTrack = LocalAudioTrack(true, 'local_audio');
  //
  // // Retrieve the camera source of your choosing
  // var cameraSources = await CameraSource.getSources();
  // var cameraCapturer = CameraCapturer(
  //   cameraSources.firstWhere((source) => source.isFrontFacing),
  // );
  //
  // // Create a video track.
  // var localVideoTrack = LocalVideoTrack(true, cameraCapturer);
  //
  // // Getting the local video track widget.
  // // This can only be called after the TwilioProgrammableVideo.connect() is called.
  // var widget = localVideoTrack.widget();


  final connectOptions = ConnectOptions(
  accessToken,
  roomName: roomName,
  // audioTracks: [LocalAudioTrack(true ],
  // videoTracks: localTracks,
  );


  _room = await TwilioProgrammableVideo.connect(connectOptions);
  _room.onConnected.listen((room){
    print('Connected to ${room.name}');
    _completer.complete(_room);
  });
  _room.onConnectFailure.listen((event){
    print('Failed to connect to room ${event.room.name} with exception: ${event.exception}');
    _completer.completeError(event.exception as Object);
  });
  return _completer.future;
}
1

There are 1 answers

0
Roy On BEST ANSWER

It appears that the dependency package 'enum_to_string-2.0.1' is causing an error. There's this function in enum_to_string.dart that is handling null. Follow changes fixed it.

##CHANGE FROM##

static T? fromString<T>(List<T> enumValues, String value,
      {bool camelCase = false}) {
    try {
      return enumValues.singleWhere((enumItem) =>
          EnumToString.convertToString(enumItem, camelCase: camelCase)
              .toLowerCase() ==
          value.toLowerCase());
    } on StateError catch (_) {
      return null;
    }
  }

##CHANGE TO##

static T? fromString<T>(List<T> enumValues, String value,
      {bool camelCase = false}) {
    try {
      return enumValues.singleWhere((enumItem) {
        final enumString = EnumToString.convertToString(enumItem, camelCase: camelCase);
        return enumString != null && value != null && enumString.toLowerCase() == value.toLowerCase();
      });
    } on StateError catch (_) {
      return null;
    }
}