在 Flutter 中重新定位/移动海拔位置
Posted
技术标签:
【中文标题】在 Flutter 中重新定位/移动海拔位置【英文标题】:Relocate / Move elevation position in Flutter 【发布时间】:2021-02-10 23:58:38 【问题描述】:问题
下图显示了 Flutter 中每个 Widget 的高程对齐方式(如果高程可用):
但我想在此处将高程移动到Card
小部件的直接中心 (Offset(0.0, 0.0)
)。
我从来没有找到一个干净的解决方案。有人在这里得到答案吗?
【问题讨论】:
请分享一些您尝试过的代码,这些代码可以编辑为答案。 如果您的意思是高程阴影,那么偏移量似乎是硬编码的,您需要例如ShapeDecoration
,您可以在其中定义自己的阴影
【参考方案1】:
在颤动中无法更改高度的offset
。 Flutter 遵循Material Design 原则,修改参数(如偏移量)的能力将超越这一目的。
正如你在source code 中看到的颤动阴影,海拔只不过是一个阴影列表。如果你想修改海拔参数,我建议创建一个自定义包装器并使用带有可覆盖参数的实际值。
import 'package:flutter/material.dart';
class CustomElevation extends StatelessWidget
final Widget child;
final Offset offset;
final int elevation;
final Map<int, List<BoxShadow>> _elevationToShadow;
CustomElevation(@required this.child, @required this.elevation, this.offset = const Offset(0.0, 0.0))
: assert(child != null),
// Here kElevationToShadow is a map exposed by flutter material design shadows
_elevationToShadow = kElevationToShadow.map<int, List<BoxShadow>>(
(int key, List<BoxShadow> value) => MapEntry<int, List<BoxShadow>>(
key,
value.map(
(BoxShadow bs) => BoxShadow(
offset: offset,
blurRadius: bs.blurRadius,
spreadRadius: bs.spreadRadius,
color: bs.color,
),
),
),
);
@override
Widget build(BuildContext context)
return Container(
decoration: BoxDecoration(
boxShadow: _elevationToShadow[elevation] ?? <BoxShadow>[],
),
child: child,
);
或者,如果您需要完全不同的东西,请继续前进,随心所欲地提升 :)
【讨论】:
非常感谢@Vineet :)。我会试一试。至少你们所有人都让我想到了使用BoxShadow
以上是关于在 Flutter 中重新定位/移动海拔位置的主要内容,如果未能解决你的问题,请参考以下文章
Flutter 中的 Google Maps 相机位置更新问题