flutter - 如何在颤动中为 DraggableScrollableSheet 提供精确的高度值?
问题描述
我DraggableScrollableSheet
的颤振很简单,它有类似initialChieldSize
,的参数minChildSize
,maxChildSize
但它们在父高度的函数中取值。
但我有固定高度元素,并希望将精确的高度值赋予initialChildSize
.
如何为上述参数提供准确的值DraggableScrollableSheet
?
解决方案
尝试获取 MediaQuery 的大小或任何其他自定义父窗口小部件的大小(使用 Layout Builder 自定义大小)。然后给 DraggableScrollableSheet 初始和最小子尺寸 <you_desired_height> / size.height。这样,您将获得该特定高度的分数。它对我有用:)
这是一个例子:
return LayoutBuilder(
builder: (context, safeAreaSize) {
return Stack(
children: [
Placeholder(),
Positioned.fill(
child: DraggableScrollableSheet(
initialChildSize: 40 / safeAreaSize.maxHeight,
minChildSize: 40 / safeAreaSize.maxHeight,
maxChildSize: 1.0,
expand: false,
builder: (context, scrollController) {
return SingleChildScrollView(
controller: scrollController,
child: Container(height: 40).backgroundColor(Colors.blue),
);
},
),
),
],
);
},
);
如果您想查看它的实际效果,请访问: https ://dartpad.dev/d89a5411bb9785edfb630f6082b71d00
编辑:我在 pub.dev 上找到了一个名为“sliding_sheet”的包,它很整洁。它可以根据内容自动调整工作表的大小,并且可以捕捉到屏幕上您想要的位置。我将与上述代码相同的值赋予第一个“捕捉”(它是 SlidiingSheet 构造函数的参数)。希望你会发现它有用!
推荐阅读
- python - Discord.py:googletrans 命令突然停止工作
- javascript - 如何在 HTML 播放器上流式传输实时 TS(传输流)文件?
- node.js - 带有 Firebase 和 Heroku 的 Vue-cookies,未发送
- go - 切片元素未在 go 中更新
- python - 当我尝试运行我的不和谐机器人时,为什么会出现错误?
- mysql - 如果 mysql 中存在字符串,则搜索列(匹配的反向)
- python - Python Beautifulsoup 检索 json
- python - 我无法运行 Python Flask 应用程序,需要帮助
- excel - 如何从 vlookup 中获取一个单元格中的多个列?
- c# - C#:如何从包含抽象类的 IReadOnlyList 中获取派生类的值