当有最终完成者时,如何使注入的javascript代码出现?

时间:2019-12-13 07:31:17

标签: flutter flutter-layout flutter-dependencies

您好,我是新手,这是我第一个应用要完成的唯一剩余问题,由于某种原因,我使用的注入javascript没有出现在WebView应用中。

  

已修复(抱歉,延迟编辑:代码为(await _controller.future).evaluateJavascript(“ document.getElementsByClassName('footer-container')[0] .style.display ='没有”;“)

     

注意:我使用的是flutter开发团队的webview_flutter,我希望同时刷新FAB和注入的代码

我的代码如下:

import 'dart:async';
import 'dart:math';
import 'package:flutter/material.dart';
import 'package:webview_flutter/webview_flutter.dart';

class HomePage extends StatefulWidget {
  HomePage({Key key}) : super(key: key);

  @override
  _HomePageState createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {

  WebViewController _myController;
      final Completer<WebViewController> _controller =
      Completer<WebViewController>();
  @override
  Widget build(BuildContext context) {
    return SafeArea(
            child: Scaffold(
                  body: WebView(
                  initialUrl: 'https://syncshop.online/en/',
                  javascriptMode: JavascriptMode.unrestricted,
                  onWebViewCreated: (controller) {
                  _controller.complete(controller);
                },
          onPageFinished: (controller) {
          _myController.evaluateJavascript("document.getElementsByClassName('footer-container')[0].style.display='none';");
          },
          ),
    floatingActionButton: FutureBuilder<WebViewController>(
        future: _controller.future,
        builder: (BuildContext context, AsyncSnapshot<WebViewController> controller) {
          if (controller.hasData) {
            return FloatingActionButton(
            onPressed: () {
              controller.data.reload();
            },
            child: Icon(Icons.refresh),
          );
          }
          return Container();
        }),
          ),
      );
    }
}

1 个答案:

答案 0 :(得分:1)

我认为_myController没有分配任何东西。

因此,请尝试将_controller用于evaluateJavascript()。像这样:

(await _controller.future).evaluateJavascript("document.getElementsByClassName('footer-container')[0].style.display='none';");