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

Flutter中local_auth与google_ads插件兼容问题求助

解决Flutter中local_auth与google_ads插件的Activity冲突问题

问题背景

使用local_auth插件实现指纹认证时,必须将MainActivity的父类改为FlutterFragmentActivity才能避免“local_auth plugin requires activity to be a fragmentactivity flutter”错误;但同时使用google_ads插件注册原生广告时,原代码依赖context变量,改为FlutterFragmentActivity后会出现“Unresolved reference: context”错误。

解决方案

FlutterFragmentActivity本身继承自Context相关类,直接用当前Activity实例(this)替代原代码中的context即可解决冲突,具体修改步骤:

  • 将MainActivity的父类从FlutterActivity切换为FlutterFragmentActivity
  • 把注册原生广告时的context参数替换为this
  • 清理无用的import语句

修改后的完整代码

package app.masarifi

import io.flutter.embedding.android.FlutterFragmentActivity
import io.flutter.embedding.engine.FlutterEngine
import io.flutter.plugins.googlemobileads.GoogleMobileAdsPlugin

class MainActivity : FlutterFragmentActivity() {
    override fun configureFlutterEngine(flutterEngine: FlutterEngine) {
        super.configureFlutterEngine(flutterEngine)

        GoogleMobileAdsPlugin.registerNativeAdFactory(
            flutterEngine, "listTile", ListTileNativeAdFactory(this)
        )

        GoogleMobileAdsPlugin.registerNativeAdFactory(
            flutterEngine, "mediumAd", MediumNativeAdFactory(this)
        )
    }

    override fun cleanUpFlutterEngine(flutterEngine: FlutterEngine) {
        super.cleanUpFlutterEngine(flutterEngine)

        GoogleMobileAdsPlugin.unregisterNativeAdFactory(flutterEngine, "listTile")
        GoogleMobileAdsPlugin.unregisterNativeAdFactory(flutterEngine, "mediumAd")
    }
}

说明

  • FlutterFragmentActivity是FragmentActivity的子类,完全兼容local_auth插件的要求
  • 在Activity类中,this本身就是Context的实例,可直接传递给广告工厂类,无需额外的context变量

内容的提问来源于stack exchange,提问作者hesham shawky

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 06:51:18