Flutter 3.29.0中razorpay_flutter插件Registrar找不到符号错误解决方法
解决Flutter 3.29.0中razorpay_flutter插件的Registrar兼容问题
问题描述
在Flutter 3.29.0项目中使用razorpay_flutter插件时,构建出现以下错误:
error: cannot find symbol import io.flutter.plugin.common.PluginRegistry.Registrar; ^ symbol: class Registrar location: interface PluginRegistry
原因是Flutter 3.10+版本开始废弃Registrar类,改用新的FlutterPlugin注册接口,而旧版本的razorpay_flutter插件仍依赖旧的注册方式。
已尝试的无效方法
- 升级插件至1.3.9(该版本未正式发布)
- 执行
flutter clean和flutter pub get - 手动替换Registrar为FlutterPlugin但未完整适配逻辑
可行解决方案
1. 自定义修改插件(推荐)
由于官方兼容版本未发布,可自行fork插件仓库并适配新的注册接口:
- 前往razorpay_flutter的GitHub仓库,fork一份到自己的账号下
- 打开仓库中的
android/src/main/java/com/razorpay/flutter/RazorpayPlugin.java文件 - 替换原有代码为适配FlutterPlugin的逻辑:
package com.razorpay.flutter; import android.content.Context; import androidx.annotation.NonNull; 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; public class RazorpayPlugin implements FlutterPlugin, MethodCallHandler { private MethodChannel channel; private Context context; @Override public void onAttachedToEngine(@NonNull FlutterPluginBinding binding) { context = binding.getApplicationContext(); channel = new MethodChannel(binding.getBinaryMessenger(), "razorpay_flutter"); channel.setMethodCallHandler(this); } @Override public void onDetachedFromEngine(@NonNull FlutterPluginBinding binding) { channel.setMethodCallHandler(null); } @Override public void onMethodCall(@NonNull MethodCall call, @NonNull Result result) { // 保留原有的onMethodCall业务逻辑,无需修改 if (call.method.equals("getPlatformVersion")) { result.success("Android " + android.os.Build.VERSION.RELEASE); } else { // 原插件的其他方法处理逻辑 // ... } } } - 修改
android/src/main/AndroidManifest.xml,移除原有的meta-data注册项(新的FlutterPlugin无需在Manifest中注册) - 在项目的
pubspec.yaml中引用自己修改后的仓库:dependencies: razorpay_flutter: git: url: https://github.com/你的GitHub用户名/razorpay-flutter.git ref: main # 或者你修改后的分支名称 - 执行
flutter pub get后重新构建项目
2. 临时降级Flutter版本
如果不想修改插件,可暂时降级到支持Registrar的Flutter稳定版,比如3.16.x系列:
flutter downgrade 3.16.9
待官方发布兼容3.29.0的razorpay_flutter版本后,再升级Flutter并更新插件。
3. 等待官方正式兼容版本
关注razorpay_flutter的pub.dev页面或GitHub仓库的Release公告,待1.3.9或更高正式版本发布后,直接在pubspec.yaml中升级插件:
dependencies: razorpay_flutter: ^1.3.9
内容的提问来源于stack exchange,提问作者Monkey.D Amith
相关产品推荐
相关产品推荐

