Flutter构建失败:razorpay_flutter与paytm_allinonesdk中Registrar未找到
解决Flutter集成支付插件时的Registrar找不到错误
错误信息
error: cannot find symbol import io.flutter.plugin.common.PluginRegistry.Registrar; ^ symbol: class Registrar location: interface PluginRegistry public static void registerWith(Registrar registrar) { ^ symbol: class Registrar location: class RazorpayFlutterPlugin
复现步骤
- 在
pubspec.yaml中添加razorpay_flutter: ^1.3.7和paytm_allinonesdk: ^1.2.8 - 执行
flutter pub get - 执行
flutter build apk触发错误
问题原因
Flutter 3.20及以上版本移除了PluginRegistry.Registrar接口,改用FlutterPlugin接口实现插件注册。你使用的旧版本支付插件仍依赖废弃的Registrar,导致编译失败。
解决方案
方案1:升级插件到兼容版本
将插件版本更新为适配Flutter 3.20+的最新稳定版,示例pubspec.yaml配置:
dependencies: razorpay_flutter: ^2.3.0 paytm_allinonesdk: ^1.5.0
执行flutter clean && flutter pub get后重新构建项目。
方案2:手动修改插件代码适配新接口
如果无法升级插件,可手动修改插件的Android端代码:
- 找到插件的Android实现文件(如
razorpay_flutter的RazorpayFlutterPlugin.java,路径通常为android/src/main/java/com/razorpay/flutter/) - 替换原有代码为适配
FlutterPlugin的实现:import io.flutter.embedding.engine.plugins.FlutterPlugin; import io.flutter.plugin.common.MethodCall; import io.flutter.plugin.common.MethodChannel; import io.flutter.plugin.common.MethodChannel.MethodCallHandler; import io.flutter.plugin.common.MethodChannel.Result; import io.flutter.embedding.engine.plugins.FlutterPlugin.FlutterPluginBinding; public class RazorpayFlutterPlugin implements FlutterPlugin, MethodCallHandler { private MethodChannel channel; @Override public void onAttachedToEngine(FlutterPluginBinding flutterPluginBinding) { channel = new MethodChannel(flutterPluginBinding.getBinaryMessenger(), "razorpay_flutter"); channel.setMethodCallHandler(this); } @Override public void onMethodCall(MethodCall call, Result result) { // 保留原有业务逻辑 } @Override public void onDetachedFromEngine(FlutterPluginBinding binding) { channel.setMethodCallHandler(null); } } - 对
paytm_allinonesdk的对应文件执行相同修改 - 执行
flutter clean && flutter pub get && flutter build apk
内容的提问来源于stack exchange,提问作者Hammad Khan
相关产品推荐
相关产品推荐

