You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 04:50:04