首页 > 解决方案 > 当我使用 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;
}```

标签: androidiosflutterdartadmob

解决方案


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 个位置参数,但函数没有期望任何位置参数”。要修复它,您需要执行以下两种可能的操作之一:

  1. 如果Admob.initialize()没有参数,只需使用Admob.initialize()
  2. 如果Admob.initialize()API 密钥有一个命名参数,您将不得不使用类似Admob.initialize(apiKey: "your api key")的东西(注意实际名称apiKey可能不同,请查看 admob 的文档)

推荐阅读