首先,我分离了所有小部件以获得更清晰的代码结构。我准备了一个条件,可以根据它的值更改布局。如果为true,则显示此内容;如果为false,则显示此内容。
我debugPrint布尔值,它表明只要检测到手势,该值就会被更新。但是屏幕在发生时不会更新。
条件已在我的homeWidget文件中设置。
AnimatedContainer(
duration: Duration(seconds: 1),
child: isScrolled
? Container(
child: Column(
children: <Widget>[
Flexible(
flex: 2,
child: StoriesWidget(),
),
Flexible(
flex: 5,
child: PostWidget(),
)
],
),
)
: Container(
color: Colors.white,
child: Column(
children: <Widget>[
Flexible(flex: 3, child: ProfileWidget()),
Flexible(flex: 5, child: StoriesWidget()),
Flexible(
flex: 10,
child: Container(
width: double.infinity,
height: double.infinity,
child: PostWidget(),
),
),
],
),
))));
值的更新发生在名为postWidget的单独Widget中
@override
Widget build(BuildContext context) {
return GestureDetector(
onTap: () => profileAction(),
profileAction() {
debugPrint("$isScrolled");
setState(() {
isScrolled = true;
});
}