Flutter 如何在加载图像之前消除间隙?

Flutter 如何在加载图像之前消除间隙?,flutter,Flutter,我有一个应用程序,我在滑动应用程序栏中显示图像。第一次加载页面时,图像尚未显示。加载图像需要一段时间,在这段时间内,我可以看到sliverappbar的背景色 我引用了这条线-,并遵循了它所说的内容。然而,加载图像的延迟仍然存在。有什么办法可以让我摆脱耽搁 class DescriptionPage extends StatefulWidget { @override _DescriptionPageState createState() => _DescriptionPageSt

我有一个应用程序,我在滑动应用程序栏中显示图像。第一次加载页面时,图像尚未显示。加载图像需要一段时间,在这段时间内,我可以看到sliverappbar的背景色

我引用了这条线-,并遵循了它所说的内容。然而,加载图像的延迟仍然存在。有什么办法可以让我摆脱耽搁

class DescriptionPage extends StatefulWidget {
  @override
  _DescriptionPageState createState() => _DescriptionPageState();
}

class _DescriptionPageState extends State<DescriptionPage> {
  Image img;

  void initState() {
    super.initState();
    img = Image.asset("Assets/Images/bnha.jpg");
  }

  @override
  void didChangeDependencies() {
    super.didChangeDependencies();

    precacheImage(img.image, context);
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        body: CustomScrollView(slivers: <Widget>[
          SliverAppBar(
            leading: GestureDetector(
              child: Icon(Icons.arrow_back),
              onTap: () => Navigator.of(context).pop(),
            ),
            shape: ContinuousRectangleBorder(
                borderRadius: BorderRadius.only(
                    bottomLeft: Radius.circular(50.0),
                    bottomRight: Radius.circular(50.0))),
            elevation: 5,
            expandedHeight: 200,
            pinned: true,
            floating: true,
            flexibleSpace: FlexibleSpaceBar(
              /*centerTitle: true,
          title: Text(
            'Boku no Hero Academia',
          ),*/
              background: ClipRRect(
                borderRadius: BorderRadius.only(
                    bottomLeft: Radius.circular(15.0),
                    bottomRight: Radius.circular(15.0)),
                child: img,
              ),
            ),
          ),
        ]));
  }
}

类描述页扩展StatefulWidget{
@凌驾
_DescriptionPageState createState()=>_DescriptionPageState();
}
类_DescriptionPageState扩展状态{
图像img;
void initState(){
super.initState();
img=Image.asset(“Assets/Images/bnha.jpg”);
}
@凌驾
void didChangeDependencies(){
super.didChangeDependencies();
预处理图像(img.image,context);
}
@凌驾
小部件构建(构建上下文){
返回脚手架(
主体:自定义滚动视图(条子:[
滑杆(
引导:手势检测器(
子:图标(图标。箭头返回),
onTap:()=>Navigator.of(context.pop(),
),
形状:连续矩形边框(
borderRadius:仅限borderRadius(
左下角:半径。圆形(50.0),
右下角:半径.圆形(50.0)),
标高:5,
扩展高度:200,
对,,
浮动:是的,
flexibleSpace:FlexibleSpaceBar(
/*标题:对,
标题:正文(
“博库不是英雄学术界”,
),*/
背景:ClipRRect(
borderRadius:仅限borderRadius(
左下角:半径。圆形(15.0),
右下角:半径。圆形(15.0)),
孩子:img,
),
),
),
]));
}
}
用于缓存图像,对于第一次更新的图像,您可以使用占位符参数放置任何您喜欢的默认图像

更新:
改为使用FadeInImage.assetNetwork()

这个答案(以及它下面的注释)怎么样?在导航到页面之前预加载和缓存您的图像可能会解决此问题。我相信缓存的网络图像适用于来自web的图像。我的图像是一种资产。我的坏,用FadeInImage.assetNetwork()代替怎么样: