Android 颤振-当用户访问选项卡时,将时间保存到变量

Android 颤振-当用户访问选项卡时,将时间保存到变量,android,flutter,webview,flutter-layout,Android,Flutter,Webview,Flutter Layout,我是新手,所以请容忍我。所以我有一个简单的webview应用程序,有两个选项卡 我只是想问一下,如何将用户加载时间以时间格式保存到变量名lastload,然后当用户重新进入该选项卡时,如果lastload变量大于1分钟,函数将检查该变量并执行刷新 我真的不知道该怎么解决这个问题。请帮忙。谢谢大家! 如果您想在此处查看示例代码: class _CategoriesPageState extends State<CategoriesPage> { WebViewControlle

我是新手,所以请容忍我。所以我有一个简单的webview应用程序,有两个选项卡

我只是想问一下,如何将用户加载时间以时间格式保存到变量名
lastload
,然后当用户重新进入该选项卡时,如果
lastload
变量大于1分钟,函数将检查该变量并执行刷新

我真的不知道该怎么解决这个问题。请帮忙。谢谢大家!

如果您想在此处查看示例代码:

class _CategoriesPageState extends State<CategoriesPage> {
    WebViewController _myController;
      final Completer<WebViewController> _controller =
      Completer<WebViewController>();
  @override
  Widget build(BuildContext context) {
    return SafeArea(
          child: Scaffold(
            body: WebView(
              initialUrl: 'www.facebook.com',
              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';");

          },
        ),
          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();
          }
        ),
      ),
    );
  }
}
class\u分类页面状态扩展状态{
WebViewController\u myController;
最终完成器控制器=
完成符();
@凌驾
小部件构建(构建上下文){
返回安全区(
孩子:脚手架(
正文:WebView(
初始URL:“www.facebook.com”,
javascriptMode:javascriptMode.unrestricted,
onWebViewCreated:(控制器){
_控制器。完成(控制器);
},
onPageFinished:(控制器)异步{
(wait _controller.future).evaluateJavascript(“document.getElementsByClassName('footer-container')[0].style.display='none';”;
evaluateJavascript(“document.getElementById('st_notification_1').style.display='none';”;
(wait _controller.future).evaluateJavascript(“document.getElementById('sidebar_box').style.display='none';”;
},
),
浮动操作按钮:FutureBuilder(
未来:_controller.future,
生成器:(BuildContext上下文,异步快照控制器){
if(controller.hasData){
返回浮动操作按钮(
已按下:(){
controller.data.reload();
},
子:图标(Icons.refresh),
);
}
返回容器();
}
),
),
);
}
}

要获取日期和时间,请使用用户
DateTime
类。使用此类并使用函数
difference
获取日期时间之间的差异

var lastLoaded; 
void tappingOnTab(){
   final now = DateTime.now();
   if(lastLoaded != null){
        if(now.difference(lastLoaded).inMinutes > 1){
              // yes last loaded time is more than 1 min ago
        } 
   }
   lastLoaded = now;

}

如果要在多个应用程序实例上持久化上次加载的时间,请使用SharedReferences:。

当选项卡更改或点击时,用于存储在本地存储中HI“如果要在多个应用程序实例上持久化上次加载的时间”是什么意思好的,我会更新这个,但我仍然需要试验在条件满足时如何强制刷新WebView。顺便问一下,lastloaded上还没有任何保存数据,对吗?最初lastloaded将为
null
,函数将当前日期时间分配给lastloaded。然后在即将调用函数时,lastLoaded将是最后一次,它将与
if()
中的当前日期时间进行比较,并使用当前日期时间再次分配lastLoaded好的,我们可以进行pm吗?我想我几乎用你的解决方案解决了我的问题,因为我添加了一个功能,可以检查互联网连接是否可用。