是否可以-在Flutter Web应用程序中插入Google AdSense?

时间:2019-09-12 15:15:06

标签: flutter adsense flutter-web

我尝试在我的网站上插入下一个代码(Google AdSense),但目前未成功。代码是:

            <script type="text/javascript">var nend_params={"media":00000,"site":000000,"spot":000000,"type":1,"oriented":1};0</script>
            <script type="text/javascript" src="https://js1.nend.net/js/nendAdLoader.js"></script>

1。有一段时间我尝试使用类似这样的句子的'dart:js'

    js.context.callMethod(..

但是,认为它不起作用,因为我们需要展示广告,不仅执行javascript代码。

2.next,我想它可以是一个WebView(在webapp上是一个webview。),然后尝试使用下一个:

依赖性:   webview_flutter:^ 0.3.14 但是秋天是

“错误:PlatformException(未注册工厂,未为视图类型'plugins.flutter.io/webview'注册工厂” ...

可能是一个拥有积极经验的人,或者可以给我任何建议。

1 个答案:

答案 0 :(得分:1)

如果您只需要在网页中使用这些脚本,则可以尝试将其直接包含在web/Index.html页中。

否则,您将必须使用ui.platformViewRegistry.registerViewFactory,如此处PlatFormView example所示。以下代码会将脚本元素添加到您的页面。

import 'package:flutter/material.dart';
import 'dart:ui' as ui;
import 'dart:html';

class MyHomePage extends StatelessWidget {
  MyHomePage({Key key, this.title}) : super(key: key);

  final String title;

  @override
  Widget build(BuildContext context) {
    ui.platformViewRegistry.registerViewFactory("add_script", (int viewId) {
      ScriptElement element = ScriptElement()
        ..src = "https://js1.nend.net/js/nendAdLoader.js"
        ..type = "text/javascript";
      return element;
    });
    return Center(
      child: Column(
        mainAxisAlignment: MainAxisAlignment.center,
        children: <Widget>[
          Directionality(
            textDirection: TextDirection.ltr,
            child: SizedBox(
              width: 640,
              height: 360,
              child: HtmlElementView(viewType: 'add_script'),
            ),
          ),
        ],
      ),
    );
  }
}
  

注意:此代码需要一个托管小部件,例如MaterialApp内的脚手架或类似的东西。对于脚本中的代码,请尝试使用不同的viewtype字符串创建类似的小部件,并使用setInnerHtml或类似的方法。

但是您应该知道,此元素已作为阴影dom元素添加到页面中。 issue对此进行了讨论。

enter image description here