Flutter 颤振页面在setState({})之后跳转到顶部

Flutter 颤振页面在setState({})之后跳转到顶部,flutter,dart,Flutter,Dart,我在颤振应用程序中以交错网格视图显示了许多图像 每次我调用setState{},例如在删除一个项目之后,页面就会跳转到顶部。我怎样才能消除这种行为 这是我的代码: 最终_scaffoldKey=新的GlobalKey 。。在构建功能之外。然后 return loadingScreen == true ? LoadingScreen() : Scaffold( key: _scaffoldKey, body: CustomScrollView( sl

我在颤振应用程序中以交错网格视图显示了许多图像

每次我调用setState{},例如在删除一个项目之后,页面就会跳转到顶部。我怎样才能消除这种行为

这是我的代码:

最终_scaffoldKey=新的GlobalKey

。。在构建功能之外。然后

return loadingScreen == true
  ? LoadingScreen()
  : Scaffold(
      key: _scaffoldKey,
      body: CustomScrollView(
        slivers: <Widget>[
          _AppBar(
            theme: theme,
            index: index,
            albumImagePath: albumImagePath,
            albumID: albumID,
            albumValue: albumValue,
            addPictureToGallery: _addPictureToGallery,
          ),
          SliverToBoxAdapter(
            child: Column(
              children: <Widget>[
                InfoBar(
                  albumPicturesSum: albumPicturesSum,
                  getBilderString: _getBilderString,
                  theme: theme,
                  getVideoProgress: _getVideoProgress,
                  progress: progress,
                ),
                albumID == 99999999
                    ? // Demo Projekt

                    DemoImageGrid(
                        demoImageList: demoImageList,
                        getDemoImagesJson: _getDemoImagesJson,
                      )
                    : UserImageGrid(
                        picturesData: picturesData,
                        albumID: albumID,
                        showPictureActions: _showPictureActions)
              ],
            ),
          )
        ],
      ),
    );
}

可能是什么问题?

我找到了解决这个问题的方法。问题不在于设置状态{}。它是FutureBuilder的返回小部件

我变了

if (!snapshot.hasData || snapshot.connectionState == ConnectionState.waiting) {
  return Center(child: CircularProgressIndicator());
}
致:


我不知道确切的原因,但是有了这个更改,页面不再在setState{}

上跳到顶部。一种可能是因为重建触发了FutureBuilder的刷新,从而导致列重新填充。不过,很难说,因为这不是一个简单的问题,而且发生了这么多事情,我们很难做出比有根据的猜测更多的事情。另一方面,您的小部件树是巨大的。您可能应该考虑将其分解为更易于管理的部分,这本身将使调试和查看发生了什么变得更加容易。
if (!snapshot.hasData || snapshot.connectionState == ConnectionState.waiting) {
  return Center(child: CircularProgressIndicator());
}
if (!snapshot.hasData || snapshot.connectionState == ConnectionState.waiting) {
  return Container(
    height: MediaQuery.of(context).size.height,
  );
}