尝试在 flutter java 项目中默认实现 NativeAdFactory imports deprecated 方法

trying to implement NativeAdFactory imports deprecated method by default in flutter java project

我正在尝试按照本教程进行操作:https://codelabs.developers.google.com/codelabs/admob-inline-ads-in-flutter#7
我将此代码复制到名为 ListTileNativeAdFactory

的 class 中
import com.google.android.gms.ads.nativead.NativeAd;
import com.google.android.gms.ads.nativead.NativeAdView;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import java.util.Map;

import io.flutter.plugins.googlemobileads.GoogleMobileAdsPlugin;

class ListTileNativeAdFactory implements GoogleMobileAdsPlugin.NativeAdFactory {
    private final Context context;

    ListTileNativeAdFactory(Context context) {
        this.context = context;
    }

    @Override
    public NativeAdView createNativeAd(
            NativeAd nativeAd, Map<String, Object> customOptions) {
        NativeAdView nativeAdView = (NativeAdView) LayoutInflater.from(context)
                .inflate(R.layout.list_tile_native_ad, null);

        TextView attributionViewSmall = nativeAdView
                .findViewById(R.id.tv_list_tile_native_ad_attribution_small);
        TextView attributionViewLarge = nativeAdView
                .findViewById(R.id.tv_list_tile_native_ad_attribution_large);

        ImageView iconView = nativeAdView.findViewById(R.id.iv_list_tile_native_ad_icon);
        NativeAd.Image icon = nativeAd.getIcon();
        if (icon != null) {
            attributionViewSmall.setVisibility(View.VISIBLE);
            attributionViewLarge.setVisibility(View.INVISIBLE);
            iconView.setImageDrawable(icon.getDrawable());
        } else {
            attributionViewSmall.setVisibility(View.INVISIBLE);
            attributionViewLarge.setVisibility(View.VISIBLE);
        }
        nativeAdView.setIconView(iconView);

        TextView headlineView = nativeAdView.findViewById(R.id.tv_list_tile_native_ad_headline);
        headlineView.setText(nativeAd.getHeadline());
        nativeAdView.setHeadlineView(headlineView);

        TextView bodyView = nativeAdView.findViewById(R.id.tv_list_tile_native_ad_body);
        bodyView.setText(nativeAd.getBody());
        bodyView.setVisibility(nativeAd.getBody() != null ? View.VISIBLE : View.INVISIBLE);
        nativeAdView.setBodyView(bodyView);

        nativeAdView.setNativeAd(nativeAd);

        return nativeAdView;
    }
}

但问题是编译器告诉我需要实现 NativeAdFactory 方法:createNativeAd()

Class 'ListTileNativeAdFactory' must either be declared abstract or implement abstract method 'createNativeAd(UnifiedNativeAd, Map<String, Object>)' in 'NativeAdFactory'

当我 运行 项目没有重写上述方法时,我得到这个错误:

...ListTileNativeAdFactory.java:16: error: ListTileNativeAdFactory is not abstract and does not override abstract method createNativeAd(UnifiedNativeAd,Map<String,Object>) in NativeAdFactory
class ListTileNativeAdFactory implements GoogleMobileAdsPlugin.NativeAdFactory {
^

导入的google_mobile_ads包版本有问题,我只好用0.13.0版本

在 pubspec.yaml 文件中依赖项:

dependencies:
  flutter_html: ^0.8.2
  flutter:
    sdk: flutter
  google_mobile_ads: ^0.13.0 # was google_mobile_ads: ^0.12.2
  provider: ^4.3.3