问题描述
我正在尝试从网络数据中获取PageView.Builder
。当我尝试从另一页面滑动到该页面时,出现白色背景,看起来像是占位符,直到来自Future
的Web数据到达为止。我想要的是原始页面在后台保持可见,直到页面建立为止。但是,尽管我已尝试了所有可以想到的方法,但背景一直保持白色,直到Future
充满PageView
为止。如何获得透明的或至少降低了不透明度的占位符,直到它到达?
我使用了CircularProgressIndicator作为占位符,但它不仅看起来很糟糕(滑动将其朝各个方向炸毁),而且背景仍然顽固不透明和白色。我还尝试了一种具有透明颜色的Container
,但这仅覆盖了Future的白色背景。如何摆脱不透明的白色背景,它像Future
的占位符一样?
这就是未来;
FutureBuilder<List<ReplyContent>> replyStage({String replyid}) {
return FutureBuilder<List<ReplyContent>>(
future: downloadReplyJSON(replyid),builder: (context,snapshot) {
if (snapshot.hasData) {
List<ReplyContent> replycrafts = snapshot.data;
return StageBuilderVR(replycrafts,Globals.masterTitle);
} else if (snapshot.hasError) {
return Text('${snapshot.error}');
}
return
Container(
color: Colors.transparent,);
}
);
}
解决方法
因此,我决定完全采用另一种方法,并创建了一个虚拟页面,该页面以图形方式镜像了前一页,其中包含前一页的所有图形元素,而没有代码。我用这个假人代替了CircularProgressIndicator。这可能不是正确或最佳方法,但似乎效果很好。我对结果感到非常满意。
FutureBuilder<List<ReplyContent>> replyStage({String replyid,String replytitle}) {
return new FutureBuilder<List<ReplyContent>>(
future: downloadReplyJSON(),builder: (context,snapshot) {
if (snapshot.hasData) {
List<ReplyContent> replycrafts = snapshot.data;
return StageBuilderVR(replycrafts,replytitle);
} else if (snapshot.hasError) {
return Text('${snapshot.error}');
}
return DummyPage();
},);
}