Как перезагрузить новый URL или обновить sh моего веб-просмотра, когда пользователь повторно входит в мои вкладки? - PullRequest
0 голосов
/ 17 января 2020

Привет, во-первых, я новичок в трепетании, но у меня не очень хороший опыт работы с плагином webview. Как перезагрузить новый URL или просто обновить sh мое веб-представление, когда пользователь снова перейдет на вкладку, скажем, через 1 минуту?

На данный момент я могу перезагрузить веб-страницу, используя Floating action button, но Я НЕ ХОЧУ (это просто заполнитель, чтобы знать, что я могу перезагрузить веб-просмотр)

Я хочу, чтобы я мог перезагрузить веб-просмотр, когда пользователь re enters вкладка после указан c количество времени. но я, честно говоря, не знаю, как это сделать программно

  1. Выйти из вкладки более чем на 1 минуту
  2. Вернуться к вкладке и refre sh веб-просмотр.

то, что я пытался:

создать метод с именем tappingOnTab (), который сохранит время доступа к переменной с именем lasloaded, но это не работает, так как он даже не перезагружает мой веб-просмотр после выхода из вкладки в течение более 10 секунд.

Честно говоря, я пытался искать в течение 2 дней по этому поводу, но я не знаю, является ли он плагином веб-просмотра, так как он все еще находится на предварительном просмотре разработчиков, или мой код действительно не работает.

В настоящее время у меня есть этот код:

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 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(now);
      if (now.difference(lastloaded).inSeconds > 10) {
        // _checkConnection();
        setState(() {
          WebView(
            initialUrl: 'www.google.com',
          );
        });
      }
      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: (WebViewController webViewController) {
                _controller.complete(webViewController);
              },
              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';");
              },
            ),
            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();
              },
            ),
          ),
      ),
    );
  }

  _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");
    }
  }

...