如何解决联机时Flutter重建/重新加载图像小部件
这种情况就像用户离线启动应用程序一样。 因此,我试图在用户重新联机时重新加载图像。但由于某些有线原因,它不起作用!
class Test extends StatefulWidget {
@override
_TestState createState() => _TestState();
}
class _TestState extends State<Test> {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Column(
children: [
Image.network('https://interactive-examples.mdn.mozilla.net/media/cc0-images/grapefruit-slice-332-332.jpg'),FlatButton(onPressed: () => setState(() {}),child: Text('REFRESH')),],),);
}
}
解决方法
连接互联网后,您应该检查互联网连接并重建图像小部件。为此,您可以使用connectivity库。您的代码应如下所示:
class _TestState extends State<Test> {
var _isInternetConnected=false;
@override
void initState() {
super.initState();
_getConnectivity();
}
_getConnectivity(){
try {
final result = await InternetAddress.lookup('google.com');
if (result.isNotEmpty && result[0].rawAddress.isNotEmpty) {
print('connected');
setState(() {
_isInternetConnected = true;
});
}
} on SocketException catch (_) {
print('not connected');
}
}
Widget _showImage(){
if(_isInternetConnected)
return Image.network('https://interactive-examples.mdn.mozilla.net/media/cc0-images/grapefruit-slice-332-332.jpg');
else
return Image.asset('some image')
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Column(
children: [
__showImage(),FlatButton(onPressed: () => setState(() {}),child: Text('REFRESH')),],),);
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。