Вопрос или проблема
Я пытался интегрировать видеозвонок 1 на 1 от zegoCloud в flutter для Linux и получил эту ошибку при компиляции кода. Это журналы отладки.
Запуск lib/main.dart на Linux в режиме отладки...
[ZEGO][PLUGIN] Загрузка нативной зависимости
[ZEGO][PLUGIN] Нативная версия: 3.17.0.40905
[ZEGO][PLUGIN] Указанная версия SDK (3.17.0.40905) уже существует!
[ZEGO][PLUGIN] Копирование общего кода для Windows на платформу Linux.
ОШИБКА: ../../../../.pub-cache/hosted/pub.dev/zego_uikit_prebuilt_call-4.9.0/lib/src/invitation/callkit/callkit_incoming_wrapper.dart:105:7: Ошибка: Нет именованного параметра с именем 'isShowFullScreen'.
ОШИБКА: isShowFullScreen: isShowFullScreen,
ОШИБКА: ^^^^^^^^^^^^^^^^
ОШИБКА: ../../../../.pub-cache/hosted/pub.dev/flutter_callkit_incoming_yoer-2.0.4+1/lib/entities/android_params.dart:8:9: Контекст: Найден этот кандидат, но аргументы не совпадают.
ОШИБКА: const AndroidParams({
ОШИБКА: ^^^^^^^^^^^^^
ОШИБКА: ../../../../.pub-cache/hosted/pub.dev/zego_uikit-2.22.2/lib/src/plugins/signaling/impl/core/advance_invitation_data.dart:15:33: Ошибка: Должно быть возвращено ненулевое значение, так как тип возврата 'AdvanceInvitationState' не допускает null.
ОШИБКА: - 'AdvanceInvitationState' из 'package:zego_uikit/src/plugins/signaling/impl/core/defines.dart' ('../../../../.pub-cache/hosted/pub.dev/zego_uikit-2.22.2/lib/src/plugins/signaling/impl/core/defines.dart').
ОШИБКА: static AdvanceInvitationState fromSignalingPluginInvitationUserState(
ОШИБКА: ^
ОШИБКА: Целевая сборка kernel_snapshot не удалась: Исключение
Исключение: Процесс сборки завершился неудачно
Это мои зависимости в pubspec.yaml
dependencies:
flutter:
sdk: flutter
cupertino_icons: ^1.0.2
zego_uikit_prebuilt_call: ^4.9.0
Стандартный код из предустановленного набора вызовов zegocloud
class CallPage extends StatelessWidget {
const CallPage({Key? key, required this.callID}) : super(key: key);
final String callID;
@override
Widget build(BuildContext context) {
return ZegoUIKitPrebuiltCall(
appID: Utils
.appId, // Заполните appID, который вы получили из админ-панели ZEGOCLOUD.
appSign: Utils
.appSign, // Заполните appSign, который вы получили из админ-панели ZEGOCLOUD.
userID: 'Sheikh_Umaid',
userName: 'Sheikh Umaid',
callID: callID,
// Вы также можете использовать groupVideo/groupVoice/oneOnOneVoice для совершения различных типов звонков.
config: ZegoUIKitPrebuiltCallConfig.oneOnOneVideoCall(),
);
}
}
Я пробовал каждую версию zegoCloud, чтобы сделать это в flutter web и flutter linux.
Пробовал код от ИИ,
смотрел видео на YouTube,
читал документацию,
но ничего не сработало.
Ответ или решение
Проблема, с которой вы столкнулись при интеграции видеозвонков ZegoCloud в приложении Flutter для Linux, вызывает несколько ошибок компиляции, указывающих на проблемы с параметрами методов и совместимостью пакетов. Давайте подробно разберём каждую из ошибок и предложим возможные пути их решения.
Анализ ошибок
-
Ошибка с параметром isShowFullScreen:
Error: No named parameter with the name 'isShowFullScreen'.
Эта ошибка говорит о том, что в коде, связанном с
callkit_incoming_wrapper.dart
, вы пытаетесь использовать параметрisShowFullScreen
, который отсутствует в конструкторе, к которому вы обращаетесь. Это может происходить из-за несоответствия версий пакетов. Проверьте, какая версияcallkit_incoming_wrapper
используется, и сопоставьте её с документацией к пакету. Убедитесь, что используемые зависимости совместимы друг с другом. -
Ошибка возвращаемого значения AdvanceInvitationState:
Error: A non-null value must be returned since the return type 'AdvanceInvitationState' doesn't allow null.
Эта ошибка указывает на то, что метод
fromSignalingPluginInvitationUserState
должен возвращать ненулевое значение типаAdvanceInvitationState
, но этого не происходит. Возможно, это связано с ошибкой в реализации метода или изменениями в самой библиотеке. Рекомендуется просмотреть реализацию этого метода вadvance_invitation_data.dart
и убедиться, что везде, где ожидается значение, оно действительно возвращается. -
Проблема с совместимостью зависимостей:
Из вашегоpubspec.yaml
видно, что вы используетеzego_uikit_prebuilt_call: ^4.9.0
. Попробуйте обновить все пакеты до их последних стабильных версий, особенно это касаетсяzego_uikit
. Необходимо провести анализ зависимостей и, возможно, откатить некоторые версии, если они становятся конфликтующими.
Рекомендованные действия
-
Проверка версии библиотек:
Убедитесь, что все используемые пакеты соответствуют друг другу. Возможно, вам потребуется просмотреть changelog пакетовzego_uikit_prebuilt_call
иflutter_callkit_incoming_yoer
, чтобы выявить изменения в параметрах, которые могли быть удалены или переименованы. -
Тестирование с минимальным набором зависимостей:
Попробуйте создать новый проект Flutter с минимальным набором зависимостей и включите толькоzego_uikit_prebuilt_call
. Это позволит вам изолировать проблему и понять, появляется ли она в самом базовом окружении. -
Обращение к сообществу и документации:
Если проблемы продолжаются, рекомендуется обратиться на официальные форумы поддержки ZegoCloud или GitHub-репозиторий, где возможно, другие разработчики столкнулись с подобными проблемами и смогли их решить. -
Обновление Flutter:
Убедитесь, что версия Flutter в вашем окружении актуальна. Иногда проблемы могут возникать из-за устаревших инструментов.
Заключение
Ваши ошибки компиляции могут возникать из-за несовместимости версий пакетов, неправильного применения параметров или проблем в реализации методов. Следуя вышеперечисленным шагам и внимательно изучая детали каждой ошибки, вы сможете успешно решить возникшие трудности и интегрировать видео-звонки ZegoCloud в ваше приложение Flutter для Linux.