Flutter MissingPluginException(未在频道 plugins.flutter.io/firebase_admob 上找到方法 loadInterstitialAd 的实现)
Flutter MissingPluginException(No implementation found for method loadInterstitialAd on channel plugins.flutter.io/firebase_admob)
我遇到的错误。我已经看到其他 MissingPluginExeptions,但是 none for firebase_admob.
[VERBOSE-2:ui_dart_state.cc(157)] Unhandled Exception: MissingPluginException(No implementation found for method loadInterstitialAd on channel plugins.flutter.io/firebase_admob)
#0 MethodChannel.invokeMethod (package:flutter/src/services/platform_channel.dart:319:7)
<asynchronous suspension>
#1 _invokeBooleanMethod (package:firebase_admob/firebase_admob.dart:611:61)
#2 _AsyncAwaitCompleter.start (dart:async-patch/async_patch.dart:45:6)
#3 _invokeBooleanMethod (package:firebase_admob/firebase_admob.dart:610:34)
#4 InterstitialAd.load (package:firebase_admob/firebase_admob.dart:377:12)
#5 _personSettingsState.initState (package:randompersonapp/personSettings.dart:68:45)
#6 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:4355:58)
#7 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4201:5)
#8 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
#9 Element.updateChild (package:flutter/src/widg<…>
这些是我试过的流程。
我没有从 flutter doctor 那里得到任何错误。
flutter clean
flutter doctor
flutter run
这是我用来获取错误的代码。它在一个有状态的小部件中,但我无法显示所有内容,因为它在生产代码中。
import 'dart:math';
import 'package:firebase_admob/firebase_admob.dart';
import 'package:flutter/material.dart';
import 'package:shared_preferences/shared_preferences.dart';
InterstitialAd myInterstitial;
InterstitialAd buildInterstitialAd() {
return InterstitialAd(
adUnitId: InterstitialAd.testAdUnitId,
listener: (MobileAdEvent event) {
if (event == MobileAdEvent.failedToLoad) {
myInterstitial..load();
} else if (event == MobileAdEvent.closed) {
myInterstitial = buildInterstitialAd()..load();
}
print(event);
},
);
}
void showInterstitialAd() {
myInterstitial..show();
}
void showRandomInterstitialAd() {
Random r = new Random();
bool value = r.nextBool();
if (value == true) {
myInterstitial..show();
}
}
@override
void initState() {
myInterstitial = buildInterstitialAd()..load();
super.initState();
}
@override
void dispose() {
myInterstitial.dispose();
super.dispose();
}
我在 firebase 中制作了两个应用程序,并将它们与 Android 的应用程序清单中的应用程序 ID 和 IOS 的 info.plist 中的应用程序 ID 链接起来。
错误指向行
myInterstitial = buildInterstitialAd()..load();
有人有什么建议吗?我愿意接受有关此事的任何建议或想法。
如果您遇到这个问题:
首先:在 android 清单
中添加
<manifest>
<application>
<!-- Sample AdMob App ID: ca-app-pub-3940256099942544~3347511713 -->
<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="[ADMOB_APP_ID]"/>
</application>
</manifest>
其次:当你在android清单中添加东西时,你需要关闭应用程序(停止模拟)并重新开始android清单刷新。
PS:不要忘记在 app/build 中添加这个。gradle:
implementation 'com.google.firebase:firebase-ads:18.0.0'
我遇到的错误。我已经看到其他 MissingPluginExeptions,但是 none for firebase_admob.
[VERBOSE-2:ui_dart_state.cc(157)] Unhandled Exception: MissingPluginException(No implementation found for method loadInterstitialAd on channel plugins.flutter.io/firebase_admob)
#0 MethodChannel.invokeMethod (package:flutter/src/services/platform_channel.dart:319:7)
<asynchronous suspension>
#1 _invokeBooleanMethod (package:firebase_admob/firebase_admob.dart:611:61)
#2 _AsyncAwaitCompleter.start (dart:async-patch/async_patch.dart:45:6)
#3 _invokeBooleanMethod (package:firebase_admob/firebase_admob.dart:610:34)
#4 InterstitialAd.load (package:firebase_admob/firebase_admob.dart:377:12)
#5 _personSettingsState.initState (package:randompersonapp/personSettings.dart:68:45)
#6 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:4355:58)
#7 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4201:5)
#8 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
#9 Element.updateChild (package:flutter/src/widg<…>
这些是我试过的流程。 我没有从 flutter doctor 那里得到任何错误。
flutter clean
flutter doctor
flutter run
这是我用来获取错误的代码。它在一个有状态的小部件中,但我无法显示所有内容,因为它在生产代码中。
import 'dart:math';
import 'package:firebase_admob/firebase_admob.dart';
import 'package:flutter/material.dart';
import 'package:shared_preferences/shared_preferences.dart';
InterstitialAd myInterstitial;
InterstitialAd buildInterstitialAd() {
return InterstitialAd(
adUnitId: InterstitialAd.testAdUnitId,
listener: (MobileAdEvent event) {
if (event == MobileAdEvent.failedToLoad) {
myInterstitial..load();
} else if (event == MobileAdEvent.closed) {
myInterstitial = buildInterstitialAd()..load();
}
print(event);
},
);
}
void showInterstitialAd() {
myInterstitial..show();
}
void showRandomInterstitialAd() {
Random r = new Random();
bool value = r.nextBool();
if (value == true) {
myInterstitial..show();
}
}
@override
void initState() {
myInterstitial = buildInterstitialAd()..load();
super.initState();
}
@override
void dispose() {
myInterstitial.dispose();
super.dispose();
}
我在 firebase 中制作了两个应用程序,并将它们与 Android 的应用程序清单中的应用程序 ID 和 IOS 的 info.plist 中的应用程序 ID 链接起来。 错误指向行
myInterstitial = buildInterstitialAd()..load();
有人有什么建议吗?我愿意接受有关此事的任何建议或想法。
如果您遇到这个问题: 首先:在 android 清单
中添加<manifest>
<application>
<!-- Sample AdMob App ID: ca-app-pub-3940256099942544~3347511713 -->
<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="[ADMOB_APP_ID]"/>
</application>
</manifest>
其次:当你在android清单中添加东西时,你需要关闭应用程序(停止模拟)并重新开始android清单刷新。
PS:不要忘记在 app/build 中添加这个。gradle:
implementation 'com.google.firebase:firebase-ads:18.0.0'