gpt4 book ai didi

Flutter:DraggableScrollableSheet 出现时覆盖整个屏幕

转载 作者:行者123 更新时间:2023-12-03 10:11:24 70 4
gpt4 key购买 nike

点击后,我执行以下功能,该功能应该使 Bottom Sheet 以通常的方式出现(从底部向上滚动):

showModalBottomSheet(
context: context,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(30.0),
),
isScrollControlled: true,
isDismissible: true,
backgroundColor: Colors.white,
builder: (context) => ChooseTimeDialog(),
);

应该出现的 Bottom Sheet 应该是可滚动的。它的代码如下:
class ChooseTimeDialog extends StatelessWidget {
@override
Widget build(BuildContext context) {
return DraggableScrollableSheet(
initialChildSize: 0.4,
minChildSize: 0.2,
maxChildSize: 0.6,
builder: (context, scrollController) {
return SingleChildScrollView(
controller: scrollController,
child: Container(
color: Colors.blue,
height: 300,
width: 200,
),
);
},
);
}
}

这是出现在水龙头上的结果:

Result

为什么它覆盖整个屏幕?

最佳答案

当 isScrollControlled 设置为“True”时,bottomModal 被允许占据 View 的高度。将其设置为“False”会改变这一点。

我使用您的代码创建了这个 dartpad,但删除了 build 方法的小部件类
https://dartpad.dev/5850ec2b79564bb28f361eeed2b383ec

如果您想将模态表的代码与调用函数分开,您应该使用一个变量,而不是一个新类。

这是上面 dartpad 文件中包含的代码:

class MyFloatingActionButton extends StatelessWidget {
@override
Widget build(BuildContext context) {
return FloatingActionButton(
onPressed: () {
showModalBottomSheet(
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(30.0),
),
isScrollControlled: false,
isDismissible: true,
backgroundColor: Colors.white,
context: context,

builder: (context) => DraggableScrollableSheet(
initialChildSize: 0.4,
minChildSize: 0.2,
maxChildSize: 0.6,
builder: (context, scrollController) {
return SingleChildScrollView(
controller: scrollController,
child: Container(
color: Colors.blue,
height: 300,
width: 200,
),
);
},
),
);
},
);
}
}

关于Flutter:DraggableScrollableSheet 出现时覆盖整个屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60694885/

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