android - 当我使用 admob 颤振时位置参数太多
问题描述
为什么我会收到此错误太多位置参数:预期为 0,但找到了 1。(文档)尝试删除额外的位置参数,或指定命名参数的名称
最终 ams = AdMobService();
在这段代码中:位置参数太多:预期为 0,但找到了 1。(文档)尝试删除额外的位置参数,或指定命名参数的名称
@override void initState() { Admob.initialize(ams.getAdMobAppId()); }
String getAdMobAppId() {
if (Platform.isIOS) {
return 'ca-app-pub-2334510780816542~6726672523';
} else if (Platform.isAndroid) {
return 'ca-app-pub-2334510780816542~7385148076';
}
return null;
}
String getInterstitialAdUnitId() {
if (Platform.isIOS) {
return 'ca-app-pub-3940256099942544/4411468910';
} else if (Platform.isAndroid) {
return 'ca-app-pub-3940256099942544/1033173712';
}
return null;
}```
解决方案
Dart 支持“位置”参数和“命名”参数。位置参数仅通过使用它们的位置给出,但命名参数提供如下:name: value
. 例如:
void myCustomFunction(
String name, // positional argument
{int? age,} // named argument
) {
// function body
}
然后你可以像这样调用这个函数:
myCustomFunction("hello"); // "hello" is passed in to the parameter "name"
myCustomFunction(
"hello", // positional argument (1st argument in list)
age: 10, // named argument (we provide the name "age")
)
这个错误是说“你给了我 1 个位置参数,但函数没有期望任何位置参数”。要修复它,您需要执行以下两种可能的操作之一:
- 如果
Admob.initialize()
没有参数,只需使用Admob.initialize()
- 如果
Admob.initialize()
API 密钥有一个命名参数,您将不得不使用类似Admob.initialize(apiKey: "your api key")
的东西(注意实际名称apiKey
可能不同,请查看 admob 的文档)