首页 > 解决方案 > 如何在颤动中为 DraggableScrollableSheet 提供精确的高度值?

问题描述

DraggableScrollableSheet的颤振很简单,它有类似initialChieldSize,的参数minChildSizemaxChildSize但它们在父高度的函数中取值。

但我有固定高度元素,并希望将精确的高度值赋予initialChildSize.

如何为上述参数提供准确的值DraggableScrollableSheet

标签: flutterwidgetdraggable

解决方案


尝试获取 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 构造函数的参数)。希望你会发现它有用!


推荐阅读