(颤振)如果没有互联网连接,如何启动静态 html 页面而不是 URL?
Posted
技术标签:
【中文标题】(颤振)如果没有互联网连接,如何启动静态 html 页面而不是 URL?【英文标题】:(Flutter) How to launch static html page instead of URL if there is no internet connection? 【发布时间】:2019-08-12 11:21:26 【问题描述】:我已经安装了 flutter_webview_plugin。如果没有互联网连接,我正在尝试启动自定义静态 html 页面而不是我的 URL(我的网站 'wwww.duevents.in'),因为“网页不可用”页面看起来不是很专业。
我正在使用它来检查设备上的互联网,它工作正常(互联网连接时'connectionStatus ==true',反之亦然):
Future check() async
try
final result = await InternetAddress.lookup('google.com');
if (result.isNotEmpty && result[0].rawAddress.isNotEmpty)
connectionStatus = true;
print("connected $connectionStatus");
on SocketException catch (_)
connectionStatus = false;
print("not connected $connectionStatus");
这是我在没有互联网连接时加载备用 URL 的代码:
WebviewScaffold(
url: connectionStatus == true ?"http://www.duevents.in" : Uri.dataFromString('<html><body>hello world</body></html>', mimeType: 'text/html').toString())
不管设备是否有互联网连接,它总是以某种方式向我显示带有此代码的 HTML 页面。请告诉我这里出了什么问题。
【问题讨论】:
您尝试使用FutureBuilder
吗?
@Mazin No. 我在哪里需要它?
此解决方案将帮助您实现FutureBuilder
,因此您只有在获取连接状态后才能检查连接状态***.com/questions/54634418/…
我应该为“未来:”分配什么?附:我很抱歉问了很多问题,我对这个东西很陌生,所以我知道的很少。
您的check()
方法。所以它会是future: check(),
【参考方案1】:
@Mazin Ibrahim 在上述 cmets 中提供的解决方案对我有用。
所以我在这里发布解决方案:
FutureBuilder(
future: check(), // a previously-obtained Future or null
builder: (BuildContext context, AsyncSnapshot<dynamic> snapshot)
if (connectionStatus == true)
//if Internet is connected
return SafeArea(
child: WebviewScaffold(
url: "http://www.duevents.in"))
else
//If internet is not connected
return SafeArea(
child: WebviewScaffold(
url: Uri.dataFromString('<html><body>hello world</body></html>',
mimeType: 'text/html').toString()) )
【讨论】:
【参考方案2】:我建议你更改check()
方法直接返回URL。
Future<String> getURL() async
try
final result = await InternetAddress.lookup('google.com');
if (result.isNotEmpty && result[0].rawAddress.isNotEmpty)
return "http://www.duevents.in";
on SocketException catch (_)
return Uri.dataFromString('<html><body>hello world</body></html>', mimeType: 'text/html').toString();
那么在FutureBuilder
中,您可以使用直接返回的 URL。
FutureBuilder(
future: getURL(), // a previously-obtained Future or null
builder: (BuildContext context, String url)
return SafeArea(
child: WebviewScaffold(
url: url))
)
【讨论】:
以上是关于(颤振)如果没有互联网连接,如何启动静态 html 页面而不是 URL?的主要内容,如果未能解决你的问题,请参考以下文章
当网络连接恢复时,使用 Bloc /Cubit 颤振不会发生自动刷新?