flutter - Flutter,阴影裁剪系统如何工作?
问题描述
我对 Flutter 中的裁剪系统如何工作感到非常困惑。
所以我将从这个例子开始,非阴影已被剪裁。
甚至阴影也从其自身或其父容器中溢出。
Container(
child: Column(
children: [
Text("test"),
Container(
margin: paddingTheme.edgeInsets,
child: Row(
children: [
ShadowBox(),
ShadowBox(),
ShadowBox(),
],
),
),
],
),
)
现在如果我添加更多ShadowBox()
直到溢出,所有的阴影都会被剪掉。
例如:
Container(
child: Column(
children: [
Text("test"),
Container(
margin: paddingTheme.edgeInsets,
child: Row(
children: [
ShadowBox(),
ShadowBox(),
ShadowBox(),
ShadowBox(), // ADD THIS
],
),
),
],
),
)
现在即使我更改Row
为SingleChildScrollView
或者List
它仍然被剪辑,但不会溢出
Container(
child: Column(
children: [
Text("test"),
Container(
margin: paddingTheme.edgeInsets,
child: ListView.builder( // CHANGE FROM ROW TO LIST
scrollDirection: Axis.horizontal,
itemCount: 5,
itemBuilder: (c, i) => ShadowBox(),
),
),
],
),
)
所以问题是它是如何工作的,我怎样才能防止这些阴影被剪掉?
还是 Flutter 本身的设计缺陷?
解决方案
我在 Flutter 的 issue 中遇到了这个问题。
https://github.com/flutter/flutter/issues/67858
据我所知,默认 ClipBehaviour与 internalContainer
Row
Column
不同。ListView
Overflow
所以我们通过添加clipBehaviour: Clip.none
到 ListView 有一个解决方法。
推荐阅读
- swift - 如何在 Mac Catalyst 中检测窗口大小调整?
- node.js - 是否有代码模式可以将使用 async 函数创建的 bcrypt 哈希返回到单独的模块?
- java - 使用 Jackson 反序列化带有重复嵌套标签的 xml
- javascript - 添加respond_to时的ActionController::UnknownFormat
- unreal-engine4 - 如何获取对触发框的引用
- c++ - 如何在使用 GDB 遍历代码时禁用 C++ 模板中的单步执行?
- android - 使用 Burp 拦截时 Android 上的 TLS 证书错误 - 使用 Facebook 应用程序
- c# - C# Winform SQL Server 连接字符串
- java - 阿帕奇点燃;连接集群失败,连接失败
- javascript - Promise .then() 链:第二个 .then 在第一个之前运行?o.0