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

Flutter集成Revolut Payment遇未解析引用错误求助

求助:Flutter集成Revolut Pay时Kotlin代码报错

我正尝试将Revolut Payment集成到Flutter项目中,操作过程中在MainActivity.kt文件里遇到两个编译错误:

  • Unresolved reference: RevolutPayEnvironment
  • Unresolved reference: RevolutPayments

我的Kotlin代码如下:

package com.example.foodbourge_mobile_app

import androidx.annotation.NonNull
import io.flutter.embedding.android.FlutterActivity
import io.flutter.embedding.engine.FlutterEngine
import io.flutter.plugin.common.MethodChannel
import android.content.Context
import android.content.ContextWrapper
import android.content.Intent
import android.content.IntentFilter
import android.os.BatteryManager
import android.os.Build.VERSION
import android.os.Build.VERSION_CODES

class MainActivity: FlutterActivity() {
  private val CHANNEL = "samples.flutter.dev/revolut_pay"

  override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) {
    super.configureFlutterEngine(flutterEngine)
    fun getBatteryLevel(): Int {
      val batteryLevel: Int
      if (VERSION.SDK_INT >= VERSION_CODES.LOLLIPOP) {
        val batteryManager = getSystemService(Context.BATTERY_SERVICE) as BatteryManager
        batteryLevel = batteryManager.getIntProperty(BatteryManager.BATTERY_PROPERTY_CAPACITY)
      } else {
        val intent = ContextWrapper(applicationContext).registerReceiver(null, IntentFilter(Intent.ACTION_BATTERY_CHANGED))
        batteryLevel = intent!!.getIntExtra(BatteryManager.EXTRA_LEVEL, -1) * 100 / intent.getIntExtra(BatteryManager.EXTRA_SCALE, -1)
      }

      return batteryLevel
    }
    fun payByRevolut(): Int {
      RevolutPayments.revolutPay.init(
            environment = RevolutPayEnvironment.SANDBOX, // Change to MAIN for production
            merchantPublicKey = "10ccaaa5-9316-44e9-9da1-2e714c3310c0",
            requestShipping = false,
            // customer = Customer(
            //     name = "John Doe",
            //     email = "john@example.com",
            //     phoneNumber = "1234567890",
            //     dateOfBirth = "1990-01-01"
            // )
        )

      return 0
    }
    MethodChannel(flutterEngine.dartExecutor.binaryMessenger, CHANNEL).setMethodCallHandler {
      call, result ->
      if (call.method == "getBatteryLevel") {
        val batteryLevel = getBatteryLevel()

        if (batteryLevel != -1) {
          result.success(batteryLevel)
        } else {
          result.error("UNAVAILABLE", "Battery level not available.", null)
        }
      } else {
        result.notImplemented()
      }
    }
  }
}

我已经在Android层级的build.gradle中添加了以下依赖:

implementation "com.revolut:revolutpayments:1.0.0"
implementation "com.revolut:revolutpay:2.2"

怀疑是遗漏了相关导入语句,恳请帮忙解决这两个错误。


解决方案

你的推测正确,这两个错误确实是缺少对应Kotlin导入语句导致的,同时需要注意依赖版本兼容性问题,具体解决步骤如下:

  1. 添加必要的导入语句
    在MainActivity.kt的import区域添加以下两行:
import com.revolut.revolutpayments.RevolutPayments
import com.revolut.revolutpayments.environment.RevolutPayEnvironment
  1. 排查依赖版本冲突
    你同时引入了revolutpayments:1.0.0和revolutpay:2.2,这两个库可能存在版本兼容问题。建议核对官方文档确认正确的依赖组合,或者统一使用最新兼容版本(通常revolutpay是核心库,需根据文档调整依赖配置)。

  2. 同步并清理项目
    添加导入后,点击Android Studio的Sync Project with Gradle Files按钮同步项目,再执行Build > Clean Project和Build > Rebuild Project清理编译缓存。

如果导入后仍报错,检查External Libraries目录下是否存在对应的Revolut库文件,若缺失则尝试刷新Gradle依赖或检查网络连接。


内容的提问来源于stack exchange,提问作者Yunesh Shrestha

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 01:51:11