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