Flutter / Dart-透明的背景,直到未来到来?

问题描述

我正在尝试从网络数据中获取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();
    },);
}