Windows平台Flutter WebRTC开发遇插件及编译问题求助
解决Flutter Windows平台WebRTC录制流的MissingPluginException及编译问题
问题背景
在Windows平台使用Flutter开发WebRTC客户端时,录制流触发以下异常:
MissingPluginException (MissingPluginException(No implementation found for method startRecordToFile on channel FlutterWebRTC.Method))
已尝试的操作
- 执行
DartPluginRegistrant.ensureInitialized();注册插件,无效 - 执行插件升级命令,问题依旧:
flutter pub outdated flutter pub upgrade --major-versions
- 尝试回退插件旧版本,编译失败,执行以下命令:
flutter pub cache repair flutter pub get flutter build windows
- 尝试
flutter pub cache clean,执行flutter clean时提示:
PS C:\Users\santi\dev\IKUZAIN\fwrtc_win> flutter clean Failed to remove build. A program may still be using a file in the directory or the directory itself. To find and stop such a program, see: https://superuser.com/questions/1333118/cant-delete-empty-folder-because-it-is-used Deleting build... 201ms Deleting .dart_tool... 7ms Deleting Generated.xcconfig... 1ms Deleting flutter_export_environment.sh... 0ms Deleting ephemeral... 21ms Deleting .flutter-plugins-dependencies... 0ms Deleting .flutter-plugins... 1ms
- 重启电脑后,执行
flutter build windows仍失败,错误信息:
PS C:\Users\santi\dev\IKUZAIN\fwrtc_win> flutter build windows Building with sound null safety /C:/sdk/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_webrtc-0.8.12/lib/src/native/rtc_video_renderer_impl.dart(11,7): error G76B49859: The non-abstract class 'RTCVideoRenderer' is missing implementations for these members: [C:\Users\santi\dev\IKUZAIN\fwrtc_win\build\windows\flutter\flutter_assemble.vcxproj] /C:/sdk/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_webrtc-0.8.12/lib/src/media_recorder.dart(18,8): error GE5CFE876: The method 'MediaRecorder.startWeb' has fewer named arguments than those of overridden method 'MediaRecorder.startWeb'. [C:\Users\santi\dev\IKUZAIN\fwrtc_win\build\windows\flutter\flutter_assemble.vcxproj] /C:/sdk/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_webrtc-0.8.12/lib/src/native/media_recorder_impl.dart(30,8): error GE5CFE876: The method 'MediaRecorderNative.startWeb' has fewer named arguments than those of overridden method 'MediaRecorder.startWeb'. [C:\Users\santi\dev\IKUZAIN\fwrtc_win\build\windows\flutter\flutter_assemble.vcxproj] /C:/sdk/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_webrtc-0.8.12/lib/src/native/media_stream_impl.dart(103,15): error G0A556F40: The return type of the method 'MediaStreamNative.clone' is 'MediaStream', which does not match the return type, 'Future<MediaStream>', of the overridden method, 'MediaStream.clone'. [C:\Users\santi\dev\IKUZAIN\fwrtc_win\build\windows\flutter\flutter_assemble.vcxproj] C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Microsoft\VC\v170\Microsoft.CppCommon.targets(247,5): error MSB8066: Compilaci�n personalizada de "C:\Users\santi\dev\IKUZAIN\fwrtc_win\build\windows\CMakeFiles\7e012dc9275095dffd41e5dc17eebab0\flutter_windows.dll.rule;C:\Users\santi\dev\IKUZAIN\fwrtc_win\build\windows\CMakeFiles\e7e364d593aab9909a7dd61f45347876\flutter_assemble.rule" terminada con el c�digo 1. [C:\Users\santi\dev\IKUZAIN\fwrtc_win\build\windows\flutter\flutter_assemble.vcxproj] Building Windows application... Build process failed.
flutter doctor -v检测无异常:
[✓] Flutter (Channel stable, 3.3.3, on Microsoft Windows [Versi¢n 10.0.19044.2251], locale es-ES) • Flutter version 3.3.3 on channel stable at C:\sdk\flutter • Upstream repository https://github.com/flutter/flutter.git • Framework revision 18a827f393 (8 weeks ago), 2022-09-28 10:03:14 -0700 • Engine revision 5c984c26eb • Dart version 2.18.2 • DevTools version 2.15.0 [✓] Android toolchain - develop for Android devices (Android SDK version 33.0.0) • Android SDK at C:\Users\santi\AppData\Local\Android\sdk • Platform android-33, build-tools 33.0.0 • Java binary at: C:\Program Files\Android\Android Studio\jre\bin\java • Java version OpenJDK Runtime Environment (build 11.0.12+7-b1504.28-7817840) • All Android licenses accepted. [✓] Chrome - develop for the web • Chrome at C:\Program Files\Google\Chrome\Application\chrome.exe [✓] Visual Studio - develop for Windows (Visual Studio Community 2022 17.4.1) • Visual Studio at C:\Program Files\Microsoft Visual Studio\2022\Community • Visual Studio Community 2022 version 17.4.33110.190 • Windows 10 SDK version 10.0.19041.0 [✓] Android Studio (version 2021.2) • Android Studio at C:\Program Files\Android\Android Studio • Flutter plugin can be installed from: 🔨 https://plugins.jetbrains.com/plugin/9212-flutter • Dart plugin can be installed from: 🔨 https://plugins.jetbrains.com/plugin/6351-dart • Java version OpenJDK Runtime Environment (build 11.0.12+7-b1504.28-7817840) [✓] VS Code (version 1.73.1) • VS Code at C:\Users\santi\AppData\Local\Programs\Microsoft VS Code • Flutter extension version 3.52.0 [✓] Connected device (3 available) • Windows (desktop) • windows • windows-x64 • Microsoft Windows [Versi¢n 10.0.19044.2251] • Chrome (web) • chrome • web-javascript • Google Chrome 107.0.5304.108 • Edge (web) • edge • web-javascript • Microsoft Edge 107.0.1418.56 [✓] HTTP Host Availability • All required HTTP hosts are available • No issues found!
解决思路
修复插件版本兼容性
当前编译错误显示flutter_webrtc:0.8.12与Flutter 3.3.3存在API不兼容问题(抽象方法未实现、参数/返回值不匹配)。需找到与当前Flutter版本兼容的插件版本,在pubspec.yaml中指定后执行flutter pub get。可参考插件官方CHANGELOG锁定合适版本,例如尝试0.9.x系列的稳定版。彻底清理缓存与构建文件
- 手动删除
build目录(结束Visual Studio、Flutter相关后台进程后操作,避免文件占用) - 删除
.pub-cache中flutter_webrtc相关文件夹,再执行flutter pub get重新拉取依赖
- 手动删除
检查Windows平台插件注册
确认windows/runner/main.cpp中是否正确注册WebRTC插件,需包含FlutterWebRTCPluginRegisterWithRegistrar相关代码,若缺失参考插件官方文档手动添加注册逻辑。验证录制API的平台支持
确认startRecordToFile方法是否被flutter_webrtc的Windows版本支持,部分WebRTC录制功能可能仅覆盖移动端/web。若不支持,需更换为Windows平台兼容的录制实现,或通过原生代码扩展录制能力。
内容的提问来源于stack exchange,提问作者Santi
相关产品推荐
相关产品推荐

