при использовании flutter webrtc я создаю ответ только после того, как проверил, что состояние сигнализации имеет have-remote-offer, но все равно я получаю ошибку «PeerConnection не может создать ответ в состоянии, отличном от have-remote-offer или have-local-pranswer»,Нужна помощь .. ниже код
Future<RTCPeerConnection> getPeerConnection() async {
if (null == _rtcPeerConnection) {
_rtcPeerConnection =
await createPeerConnection(Constants.iceServers, Constants.config);
await initiateRTCCallbacks();
}
return _rtcPeerConnection;
}
initiateRTCCallbacks() async {
final RTCPeerConnection _rtcPeerConnection = await getPeerConnection();
if (null != _rtcPeerConnection) {
_rtcPeerConnection.onAddTrack = (stream, track) async {};
_rtcPeerConnection.onAddStream = (stream) {
MediaStreamBloc().addToController(stream);
};
_rtcPeerConnection.onIceCandidate = (iceCandidate) {
sendIceCandidate(iceCandidate);
};
_rtcPeerConnection.onSignalingState = (rtcSignaliingState) {
print('rtcSignaliingState ' + rtcSignaliingState.toString());
_sigState = rtcSignaliingState;
if (rtcSignaliingState ==
RTCSignalingState.RTCSignalingStateHaveRemoteOffer) {
createAnswerToOffer();
}
};
_rtcPeerConnection.onRemoveStream = (stream) {
print('got on remove stream');
};
_rtcPeerConnection.onRemoveTrack = (stream, track) {
print('got on remove track');
};
_rtcPeerConnection.onIceConnectionState = (iceConnStateChange) {
print('ice connection state change ' + iceConnStateChange.toString());
if (RTCIceConnectionState.RTCIceConnectionStateFailed ==
iceConnStateChange ||
RTCIceConnectionState.RTCIceConnectionStateDisconnected ==
iceConnStateChange ||
RTCIceConnectionState.RTCIceConnectionStateClosed ==
iceConnStateChange) {
endCall();
}
};
_rtcPeerConnection.onRenegotiationNeeded = () {};
}
}
createAnswerToOffer() async {
await getPeerConnection();
RTCSessionDescription answer = await _rtcPeerConnection
.createAnswer(Constants.vidChatConstraints);
await _rtcPeerConnection.setLocalDescription(answer);
sendSdp(answer);
}
}