我使用默认值创建了一个 Flutter 项目,即 Android 的 Kotlin 和 iOS 的 Swift。在项目进行到一半时,我需要集成一个需要 Java 的 3rd 方 Android SDK。创建 Flutter 项目后,我可以将其转换为 Java for Android 吗?
我知道我需要使用 Platform Channels 将本机代码与我的 Flutter 应用程序集成,这不是我关心的问题。
我有一个带有委托的 SliverList,该委托为每个项目返回 Row 。设计需要这样的结果:
这两个孩子是文本和图像。图像是 BoxFit.cover,我使用 Flex 为它们提供所需的宽度比。仅当高度大于或等于宽度边界时(以使其至少保持正方形),我才需要图像边界高度与文本高度匹配。
第一个解决方案是使用 LayoutBuilder 读取图像宽度的约束,并将图像放入 ConstrainedBox 中,minHeight 为 LayoutBuilder->constraints->maxWidth。
LayoutBuilder(
builder: (context, constraints) => ConstrainedBox(
constraints: BoxConstraints(
minHeight: constraints.maxWidth,
maxHeight: constraints.maxWidth),
child: CachedNetworkImage(
imageUrl: "https://via.placeholder.com/400x300",
fit: BoxFit.cover,
),
),
)
Run Code Online (Sandbox Code Playgroud)
一切都很好,直到文本长于图像宽度,此时图像仍然是正方形并且不会拉伸到整个行高:
第二个解决方案是将 Row 包装在 IntrinsicHeight 小部件中。但这意味着我无法在其中使用 LayoutBuilder 。所以我删除了布局构建器,现在我无法访问设置图像最小高度的约束。图像可以很好地拉伸以填充整个行高度。直到文本太短,导致图像高度低于其宽度:
如何构建此设计以响应可变文本高度?