gpt4 book ai didi

flutter - 将项目动态添加到小部件不会更新小部件的高度

转载 作者:行者123 更新时间:2023-12-04 12:53:07 26 4
gpt4 key购买 nike

当我向 sliding_up_panel 添加小部件时初始加载后动态加载小部件,面板的高度不会增加,这意味着面板的底部被切断,我得到 A RenderFlex overflowed by 27 pixels on the bottom.错误。
在这种情况下,我该怎么做才能确保面板更新其高度?
再现
通过 condition ? widget : widget 向面板动态添加小部件逻辑。例如:

@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("SlidingUpPanelExample"),
),
body: Stack(
children: <Widget>[
Center(child: Text("This is the Widget behind the sliding panel"),),

SlidingUpPanel(
panel: Container(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
myFirstVariable ? Text("This is a sliding Widget") : Container(),
mySecondVariable ? Text("This is another sliding Widget") : Container(),
],
),
)
)
],
)
);
}
非常感谢!

最佳答案

SlidingUpPanel小部件不会根据其子项调整其高度。
您的问题的解决方案是将 SingleChildScrollView 添加到您的面板内容并使用 panelBuilder 而不是 panel 属性。
panelBuilder 通过为您提供可以提供给 SingleChildScrollView 的 Controller 来承担管理滚动和滑动冲突的负担,您的代码将更改为如下所示:

    @override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("SlidingUpPanelExample"),
),
body: Stack(
children: <Widget>[
Center(child: Text("This is the Widget behind the sliding panel"),),
SlidingUpPanel(
panelBuilder:(sc) => SingleChildScrollView(
controller: sc,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
myFirstVariable ? Text("This is a sliding Widget") : Container(),
mySecondVariable ? Text("This is another sliding Widget") : Container(),
],
),
)
)
],
)
);
}
像这样,你不会有任何溢出问题,并且当面板的内容溢出时 SingleChildScrollView 将变得可滚动。

关于flutter - 将项目动态添加到小部件不会更新小部件的高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69582863/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com