【问题标题】:MissingPluginException(No implementation found for method open on channel razorpay_flutter)MissingPluginException(未找到通道 razorpay_flutter 上打开的方法的实现)
【发布时间】:2020-05-15 03:25:01
【问题描述】:
Reloaded 7 of 542 libraries in 1,099ms.
E/flutter ( 1062): [ERROR:flutter/lib/ui/ui_dart_state.cc(157)] Unhandled Exception: MissingPluginException(No implementation found for method open on channel razorpay_flutter)
[38;5;244mE/flutter ( 1062): #0      MethodChannel.invokeMethod[39;49m
E/flutter ( 1062): <asynchronous suspension>
[38;5;248mE/flutter ( 1062): #1      Razorpay.open    (package:razorpay_flutter/razorpay_flutter.dart:48:35)[39;49m
[38;5;248mE/flutter ( 1062): #2      _BuyBidsState.openCheckout[39;49m
[38;5;248mE/flutter ( 1062): #3      _BuyBidsState.getBidsData.<anonymous closure>[39;49m
[38;5;244mE/flutter ( 1062): #4      _InkResponseState._handleTap[39;49m
[38;5;244mE/flutter ( 1062): #5      _InkResponseState.build.<anonymous closure>[39;49m        
[38;5;244mE/flutter ( 1062): #6      GestureRecognizer.invokeCallback[39;49m
[38;5;244mE/flutter ( 1062): #7      TapGestureRecognizer.handleTapUp[39;49m
[38;5;244mE/flutter ( 1062): #8      BaseTapGestureRecognizer._checkUp[39;49m
[38;5;244mE/flutter ( 1062): #9      BaseTapGestureRecognizer.acceptGesture[39;49m
[38;5;244mE/flutter ( 1062): #10     GestureArenaManager.sweep[39;49m
[38;5;244mE/flutter ( 1062): #11     GestureBinding.handleEvent[39;49m
[38;5;244mE/flutter ( 1062): #12     GestureBinding.dispatchEvent[39;49m
[38;5;244mE/flutter ( 1062): #13     GestureBinding._handlePointerEvent[39;49m
[38;5;244mE/flutter ( 1062): #14     GestureBinding._flushPointerEventQueue[39;49m
[38;5;244mE/flutter ( 1062): #15     GestureBinding._handlePointerDataPacket[39;49m
[38;5;244mE/flutter ( 1062): #16     _rootRunUnary  (dart:async/zone.dart:1138:13)[39;49m
[38;5;244mE/flutter ( 1062): #17     _CustomZone.runUnary  (dart:async/zone.dart:1031:19)    [39;49m
[38;5;244mE/flutter ( 1062): #18     _CustomZone.runUnaryGuarded  (dart:async/zone.dart:933:7)[39;49m
[38;5;244mE/flutter ( 1062): #19     _invoke1  (dart:ui/hooks.dart:273:10)[39;49m
[38;5;244mE/flutter ( 1062): #20     _dispatchPointerDataPacket  (dart:ui/hooks.dart:182:5)[39;49m
E/flutter ( 1062):

我在将 razorpay 与颤振集成时遇到此错误。我是否正确编写了代码。

  @override
  void initState() {
  super.initState();

 _razorpay = Razorpay();
 _razorpay.on(Razorpay.EVENT_PAYMENT_SUCCESS, _handlePaymentSuccess);
 _razorpay.on(Razorpay.EVENT_PAYMENT_ERROR, _handlePaymentError);
 _razorpay.on(Razorpay.EVENT_EXTERNAL_WALLET, _handleExternalWallet);
}

@override
void dispose() {
super.dispose();
_razorpay.clear();
}

 void openCheckout() async {
 var options = {
  'key': 'rzp_test_geinuADCB6Csdb',
  'amount': 10*100,
  'name': 'BidAnd2Win',
  'description': 'Buying Bid to play game',
  'prefill': {'contact': '8888888888', 'email': 'test@razorpay.com'},
  'external': {
    'wallets' : ['paytm'],
  }
 };
try{
 _razorpay.open(options);
}
catch(e) {
  debugPrint(e);
}

}

void _handlePaymentSuccess(PaymentSuccessResponse response) {
  Fluttertoast.showToast(msg: 'Success' + response.paymentId);
}

void _handlePaymentError(PaymentFailureResponse response) {
  Fluttertoast.showToast(msg: 'Failure' + response.code.toString() + " - " + response.message);
}

void _handleExternalWallet(ExternalWalletResponse response) {
  Fluttertoast.showToast(msg: 'Sucess Wallet payment' + response.walletName);
}

起初,当为所有这三种方法调用 initState() 时,我遇到了错误 [错误:flutter/lib/ui/ui_dart_state.cc(157)] 未处理的异常:MissingPluginException(未找到在通道 razorpay_flutter 上打开的方法的实现)

然后是第二种方法

[ERROR:flutter/lib/ui/ui_dart_state.cc(157)] 未处理的异常:MissingPluginException(未找到用于通道 razorpay_flutter 上的方法重新同步的实现)

对于第三种方法

[ERROR:flutter/lib/ui/ui_dart_state.cc(157)] 未处理的异常:MissingPluginException(未找到用于通道 razorpay_flutter 上的方法重新同步的实现)

我还正确添加了我的 razorpay_flutter,但是当我单击按钮并调用方法 openCheckout() 时,会发生 missingPluginException。如何修复这个未处理的异常错误,我已经在 try and catch 块中调用了 _razorpay.open(options)

【问题讨论】:

  • 只运行flutter packages get一次
  • @Divyanshu - 有用吗?

标签: flutter razorpay


【解决方案1】:

flutter clean,然后重启,就ok了

我在enter link description here 找到了它,它对我很有效。

【讨论】:

    【解决方案2】:

    回滚到 1.1.1 版

    或者只是将现有插件替换为 razorpay_flutter: 1.1.1

    (确保版本号前没有^)

    【讨论】:

      【解决方案3】:

      经过数小时的搜索,我终于找到了一个合适的解决方案: 第一步:在 android>app 中创建一个 proguard-rules.pro 的文件名 应该是:android/app/proguard-rules.pro 然后将下面的代码粘贴到 proguard-rules.pro 文件中

       -keepclassmembers class * {
          @android.webkit.JavascriptInterface <methods>;
      }
      
      -keepattributes JavascriptInterface
      -keepattributes *Annotation*
      
      -dontwarn com.razorpay.**
      -keep class com.razorpay.** {*;}
      
      -optimizations !method/inlining/*
      
      -keepclasseswithmembers class * {
        public void onPayment*(...);
      }
      

      第 2 步: 转到 android>app>build.gradle 并找到 buildTypes 在 buildTypes>release 添加一些行

      buildTypes {
          release {
              // TODO: Add your own signing config for the release build.
              // Signing with the debug keys for now, so `flutter run --release` works.
              signingConfig signingConfigs.release
              minifyEnabled false
              useProguard false
              proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
          }
      }
      

      第 3 步(IMP):检查您的应用是否已使用 https://flutter.dev/docs/deployment/android 完美签名 如果没有,请按照上述网址中的步骤操作

      PS:使用的razorpay_flutter:1.1.1

      我希望这些步骤能解决现有问题:)

      【讨论】:

        【解决方案4】:

        我在另一个颤振包上遇到了同样的问题。 PUB GET新包后,使用MethodChannels的问题的主要原因,您需要进行下一步:

        从您的设备上卸载该应用。 再次重建应用程序。 这应该可以解决问题。

        【讨论】:

          猜你喜欢
          • 2021-11-25
          • 1970-01-01
          • 2022-07-26
          • 2020-10-20
          • 2020-04-20
          • 2023-03-20
          • 2021-12-17
          • 2020-08-14
          • 1970-01-01
          相关资源
          最近更新 更多