Как я могу принудительно обновить sh моего веб-просмотра после завершения метода / функции - PullRequest
0 голосов
/ 17 января 2020

Кажется, я не смогу решить эту проблему самостоятельно :(. Но вот моя проблема

  1. Я объявил var lastloaded, где будут храниться данные даты и времени
  2. Эта переменная используется в tappingOnTab(), и в этом методе я проверю переменную lastloaded и, если она больше 1 минуты, я проверю соединение inte rnet через checkConnection() метод

  3. Если его значение больше 1 минуты, оно принудительно обновит sh веб-просмотра. Но как мне сделать это после того, как все это выполнится?

вот код моей страницы с веб-просмотром ():


class _HomePageState extends State<HomePage> {
  final FirebaseMessaging _firebaseMessaging = FirebaseMessaging();
  // WebViewController myController;
  var lastloaded;
  Completer<WebViewController> _controller = Completer<WebViewController>();

  _exitApp(BuildContext context, Future<WebViewController> controller) async {
    controller.then((data) async {
      WebViewController controller = data;
      var goBack = await controller.canGoBack();
      if (goBack == true) {
        print("onwill go back");
        controller.goBack();
      } else {
        print("onwill not go back");
        Navigator.pop(context);
      }
    });
  }

  @override
  void initState() {
    super.initState();
    tappingOnTab();
    firebaseCloudMessagingListeners();
  }

  void firebaseCloudMessagingListeners() {
    if (Platform.isIOS) iOSPermission();

    _firebaseMessaging.getToken().then((token) {
      print(token);
    });

    _firebaseMessaging.configure(
      onMessage: (Map<String, dynamic> message) async {
        setState(() {
          print("${message['data']['url']}");
          Navigator.push(
              context,
              MaterialPageRoute(
                  builder: (BuildContext context) => NotificationClicked()));
        });
      },
      onResume: (Map<String, dynamic> message) async {
        print("${message['data']['url']}");
      },
      onLaunch: (Map<String, dynamic> message) async {
        print("${message['data']['url']}");
      },
    );
  }

  void iOSPermission() {
    _firebaseMessaging.requestNotificationPermissions(
        IosNotificationSettings(sound: true, badge: true, alert: true));
    _firebaseMessaging.onIosSettingsRegistered
        .listen((IosNotificationSettings settings) {
      print("Settings registered: $settings");
    });
  }

  void tappingOnTab() {
    final now = DateTime.now();
    if (lastloaded != null) {
      print("time");
      if (now.difference(lastloaded).inMinutes > 1) {
        return _checkConnection();
      }
      lastloaded = now;
    }
  }

  @override
  Widget build(BuildContext context) {
    return WillPopScope(
      onWillPop: () => _exitApp(context, _controller.future),
      child: SafeArea(
        child: Scaffold(
          body: WebView(
            initialUrl: 'https://syncshop.online/en/',
            javascriptMode: JavascriptMode.unrestricted,
            onWebViewCreated: (controller) {
              _controller.complete(controller);
            },
            onPageFinished: (controller) async {
              (await _controller.future).evaluateJavascript(
                  "document.getElementsByClassName('footer-container')[0].style.display='none';");
              (await _controller.future).evaluateJavascript(
                  "document.getElementById('st_notification_1').style.display='none';");
              (await _controller.future).evaluateJavascript(
                  "document.getElementById('sidebar_box').style.display='none';");
            },
          ),
        ),
      ),
    );
  }

  _checkConnection() async {
    var result = await (Connectivity().checkConnectivity());
    if (result == ConnectivityResult.none) {
      _showDialog("No internet", "You are not connected to the internet");
    } else if (result == ConnectivityResult.mobile) {
      _showDialog("Internet Access", "You are connected over mobile data");
    } else if (result == ConnectivityResult.wifi) {
      _showDialog("Internet Access", "You are connected over wifi");
    }
  }

  _showDialog(title, text) {
    showDialog(
        context: context,
        builder: (context) {
          return AlertDialog(
            title: Text(title),
            content: Text(text),
            actions: <Widget>[
              FlatButton(
                child: Text("Ok"),
                onPressed: () {
                  Navigator.of(context).pop();
                },
              )
            ],
          );
        });
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...