在下图中,我想要实现的是让绿色部分Scrollable
,因为如果键盘弹出,它不会给我渲染错误。
整个屏幕只是一个Column
,其中黄色部分是自定义小部件,绿色部分是其中的另一个Column
。
我尝试了不同的解决方案。将整个 Column 包装到 SingleChildScrollView 中,但我希望黄色部分保持固定在顶部。我也尝试过仅将绿色部分包装到 SingleChildScrollView 中,但它不起作用(仍然引发渲染错误)。
我已经看到我可以使用SliverAppBar
,但我想使用我的自定义小部件(黄色部分)来实现。
我有点卡住了。
Scaffold(
body: SafeArea(
child: Column(
children: [
AppBarWidget(height: size.height * 0.15),
Container(
height: size.height - size.height * 0.15 - mediaQuery.padding.top,
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
EditableAvatarWidget(
circleRadius: circleRadius,
badge: test,
border: Border.all(color: test.mainColor, width: 5),
),
Column(
children: [
Text(
"Name Surname",
style: TextStyle(
fontWeight: FontWeight.bold,
fontSize: 26,
color: Global.blackGrey),
),
SizedBox(height: 10),
Text(
"mail@mail.com",
style: TextStyle(fontSize: 18, color: Colors.grey),
)
],
),
Padding(
padding: EdgeInsets.symmetric(
horizontal: size.width / 6, vertical: 0),
child: FlatCustomButton(
onPress: () {},
background: Global.editProfileButton,
text: "Edit profile",
textColor: Global.blackGrey,
inkwellColor: Colors.black,
),
)
],
),
),
],
),
),
);
我可能还会考虑实现一个 ListView(?),但正如你所见,我已经在 Column 内设置 mainAxisAlignment: MainAxisAlignment.spaceAround
了我的 UI 偏好。
你知道我怎么能做到这一点吗?
TL;DR:只让属于另一列(全屏)的绿色部分(列)可滚动,让黄色部分停留在该固定位置