这是一个类似的问题(标题错误):Flutter Web-如何重新加载当前活动页面
作为PWA运行Flutter web应用程序,我需要允许用户启动刷新,从而更新(web)应用程序。
不幸的是,当web和移动本机应用程序具有相同的代码库时,不再允许将“dart:html”导入为HTML;
。因此下面的代码不是选项:
RaisedButton(
child: Text("Update me"),
onPressed: () {
if (kIsWeb) html.window.location.reload();
},
),
正确的做法是什么?
编辑:我已经设法在pwa和mobile使用条件导入的相同代码库中使用'dart:js'。这意味着我可以从Flutter代码中调用JavaScript。不幸的是,location.reload(true);
不会重新加载PWA。
理想情况下,我将使用Flutter方法来实现PWA重新加载/更新或JavaScript变通方法。
编辑2:整个问题都在刷新按钮/窗口重新加载的PWA处理范围内。
不幸的是,只能从服务工作者内部调用服务工作者的skipWaiting()(https://developers.google.com/web/juditals/primers/service-workers/lifecycle#skip_the_waiting_phase)
正确的方法是将skipWaiting消息发送到服务工作者的新实例。
然而,某些浏览器(iOS?)还不完全支持skipWaiting所以更安全的方法是取消工作人员的注册。。。
最后我使用following来停止worker并重新加载。
if ('serviceWorker' in navigator) {
navigator.serviceWorker.getRegistration().then(swr => {swr.unregister().then(
() => {location.reload(true)}
)});
} else {location.reload(true)}
相关:
Access service worker skipWaiting从使用WebPack+Workbox的App build内生成
https://medium.com/@nekrtemplar/self-destroying-serviceworker-73D62921D717
https://redfin.engineering/How-to-fix-the-refresh-button-when-using-service-workers-A8E27AF6DF68
https://deanhume.com/display-a-new-version-available-progressive-web-app/
一旦网页/浏览器关闭并重新打开,PWA将得到更新!
一个解决办法是导航到您的应用程序入口点路由'/'
`Navigator.of(context).pushNamedAndRemoveUntil(
'/,
(Route<dynamic> route) => false
);`
目前我正在尝试颤振网页,我需要在颤振主频道工作。但是,后来我需要继续我的其他项目。在他们身上,我正在研究颤振稳定通道。 但是,每当我使用命令“flutter channel stable”或“fluter channel master”切换我的flutter通道时,它每次都会重新下载sdk和其他工具。 目前,我已经下载了稳定的颤振sdk和稳定的dart sdk。 我已将它们移动到“FlutterS
我可以使用“startAfter”和“limit”进行分页,但它有错误。 例如,在Firestore DB中,我有7条记录: 当页面大小为5时,第一页就可以了,因为我使用了: 它给了我1-5项。 当它加载第二页时,我使用了: 问题是第二页结果只有item7,item6消失了。“开始”也有同样的问题。 真希望它有“抵消”功能,有人有解决办法吗?
文件可以从相对于省道脚本文件的目录中读取,简单地称为。 但是,在IDE中运行的颤振测试无法读取该文件。 加载为资源(不是,因为我不想在应用程序中捆绑测试数据文件)在测试中也不起作用。 在flatter中读取文件的好方法是什么(对于命令行测试和IDE测试)? 运行非常快。然而,IntellijIDE内部的测试速度非常慢,但它可以设置调试断点并单步执行和查看变量。所以这两种测试都非常有用。
Xcode的输出:在文件中包含从 /Users/dani/development/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher-6.0.3/ios/Classes/FLTURLLauncherPlugin.m: 7: /Users/dani/development/flutter/.pub-cache/hosted/pub.dart
当我试图添加google_sign_in时,flutter_authcloud_firestore它给我带来了一个错误:” [✓] 颤振(通道稳定,v1.5.4-hotfix.2,Linux上,locale en_US.UTF-8)•颤振版本1.5。4-hotfix。2 at/home/ramu/Downloads/tools/颤振•框架版本7a4c33425d(4周前),2019-04-29 1
我想问一下IOS的实施情况 当前场景:基本上,我已经在android平台上开发了该应用程序,现在我想将其转换为IOS平台。由于这是我的第一个应用程序,我真的需要一些有经验的声音来解决我面临的一些问题。 问题: 1-是否有任何简单的方法来检测当前使用的Widget是Android/IOS平台?我们如何才能确定特定的小部件是Android平台的,并且在IOS平台上不工作,反之亦然。 2 -如果我们以某
每当我尝试使用AdMob加载广告时,我都会得到以下错误
我可以从flutter应用程序的assets/Images目录加载图像,但当从flutter包的assets/Images目录加载相同的图像时,我会得到以下错误: