在我的Flutter应用中,用户可以查看产品并对其评分。 该评论应发布到我的后端,以便我们获得有关产品的总体统计信息以及诸如此类的信息。 我的问题是,我该如何以某种方式缓存请求,以便当用户在离线状态下对产品进行评分(或者他暂时断开连接)时,他可以继续与应用程序的其他部分进行交互,并且当他再次在线时评论会在后台发送?
答案 0 :(得分:1)
这里可能还没有答案,因为我无法添加评论,但我也在寻找相同的问题。但是我发现有两个有用的软件包:
<script type="text/javascript">
function openPdf(el) {
var titulo = el.dataset.title;
var omyFrame = document.getElementById("myFrame");
var pdfscr = el.dataset.pdfscr;
document.getElementById("pdf-title").innerHTML = titulo;
omyFrame.style.display = "block";
omyFrame.src = pdfscr;
document.getElementById("contenido").style.display = "none";
document.getElementById("logo").style.display = "none";
document.getElementById("GridEmpleados").style.display = "none"
document.getElementById("nuevoempleado").style.display = "none"
}
function openText(al) {
var titulo = al.dataset.title;
var texto = al.dataset.desc
var omyFrame = document.getElementById("myFrame");
document.getElementById("pdf-title").innerHTML = titulo;
document.getElementById("myFrame").style.display = "none";
document.getElementById("contenido").style.display = "block";
document.getElementById("logo").style.display = "none";
document.getElementById("contenido").innerHTML = texto;
document.getElementById("GridEmpleados").style.display = "none"
document.getElementById("nuevoempleado").style.display = "none"
}
function openHome(il) {
var titulo = il.dataset.title;
var texto = il.dataset.desc
var omyFrame = document.getElementById("myFrame");
document.getElementById("pdf-title").innerHTML = titulo;
document.getElementById("myFrame").style.display = "none";
document.getElementById("contenido").style.display = "none";
document.getElementById("logo").style.display = "block";
document.getElementById("contenido").innerHTML = texto;
document.getElementById("GridEmpleados").style.display = "none"
document.getElementById("nuevoempleado").style.display = "none"
}
function openGrid(ul) {
var titulo = ul.dataset.title;
var texto = ul.dataset.desc
var omyFrame = document.getElementById("myFrame");
document.getElementById("pdf-title").innerHTML = titulo;
document.getElementById("myFrame").style.display = "none";
document.getElementById("contenido").style.display = "none";
document.getElementById("logo").style.display = "none";
document.getElementById("contenido").innerHTML = texto;
document.getElementById("GridEmpleados").style.display = "block"
document.getElementById("nuevoempleado").style.display = "block"
}
</script>
(https://pub.dev/packages/flutter_offline):用于处理在线/离线连接的实用程序
flutter_offline
(https://pub.dev/packages/hydrated_bloc):保留并恢复集团状态(状态管理的整体模式)。
这个想法是创建一个Hydrated集团来存储所有待处理的请求,例如,我们称为hydrated_bloc
。 PendingRequestsBloc
的{{1}}负责检查当前的连接状态:
如果用户在在线时评分:只需照常发送请求,还触发一个事件 OfflineBuilder
,以检查是否有任何待处理的请求在flutter_offline
中。
如果用户在离线(您要询问的主要情况)时评分:触发事件 ProcessPendingRequests
,以将请求添加到已水化的团体。
我认为,我们使用水合块而不是普通块,因为即使关闭并杀死应用程序,它也可以保持其状态(包含待处理的请求)。
如果您不熟悉块模式,请访问https://bloclibrary.dev/以获得官方文档。编码愉快!