我的应用程序中有一个奇怪的行为...我正在使用
PageView
,在第二页上我将 TextField
集中在页面初始化上。效果很好。然而,在第一页上,即使我设置了包装纸 Widgets
,我的 Scaffold
仍然移动了一点:resizeToAvoidBottomInset = false
。
这里有一个屏幕视频,以便更好地理解。
这是我的包装视图:
@override
Widget build(BuildContext context) {
return Scaffold(
resizeToAvoidBottomInset: false,
backgroundColor: AppColors.secondary,
body: SafeArea(
child: Column(
children: [
_buildDismissButton(),
Expanded(
child: PageView(
controller: _pageController,
onPageChanged: (index) {
if (index == 0) {
FocusScope.of(context).unfocus();
}
},
children: [
AddPhotoPage(onNextPage: () {
_pageController.nextPage(
duration: Duration(milliseconds: 350),
curve: Curves.easeInOut);
}),
AddTitlePage(),
],
),
),
],
),
),
);
}
问题出在
AddPhotoPage
:
@override
Widget build(BuildContext context) {
return Padding(
padding: EdgeInsets.symmetric(horizontal: sidePadding),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
'Foto wählen',
style: AppTextStyles.montserratH2SemiBold,
),
Spacer(flex: 1),
_buildEmptyImageStateWidgets(),
Spacer(
flex: 3,
),
RoundedCornersTextButton(
title: 'Weiter',
isLoading: isUploadingImage,
onTap: () {
widget.onNextPage();
},
),
SizedBox(
height: 50.scaled,
),
],
),
);
}
我觉得这和
Spacer()
有关系。因为如果我移除它们并仅将 SizedBoxes
放置在特定高度,则不会发生该行为。
我在这里缺少什么?如果您需要更多信息,请告诉我!
检查widget树中是否有上面的Scaffold。我也遇到了类似的问题,结果发现我的 main.dart 文件中也有一个 Scaffold。在 Scaffold() 添加 resizeToAvoidBottomInset: false 后,元素停止移动。
Tomasz Kot 的答案是正确的。
我的底部导航栏使用脚手架,然后导航栏内部也有使用脚手架的主页。当我同时实现 resizeToAvoidBottomInset = false 时,它可以工作,但是如果我在导航栏中仅实现根脚手架,则它不起作用。也许有人可以深入解释一下。