【发布时间】:2020-04-18 15:04:02
【问题描述】:
我有简单的DraggableScrollableSheet 在颤振中,它有像initialChieldSize、minChildSize、maxChildSize 这样的参数,但它们在父高度的函数中具有价值。
但我有固定高度元素,并希望将精确高度值赋予initialChildSize。
如何为DraggableScrollableSheet中的上述参数赋值?
【问题讨论】:
我有简单的DraggableScrollableSheet 在颤振中,它有像initialChieldSize、minChildSize、maxChildSize 这样的参数,但它们在父高度的函数中具有价值。
但我有固定高度元素,并希望将精确高度值赋予initialChildSize。
如何为DraggableScrollableSheet中的上述参数赋值?
【问题讨论】:
尝试获取 MediaQuery 的大小或任何其他自定义父窗口小部件的大小(使用 Layout Builder 自定义大小)。然后给 DraggableScrollableSheet 初始和最小子尺寸
这是一个例子:
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 构造函数的参数)。希望对您有用!
【讨论】: