在 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 相机位置更新问题

如何重新定位或移动 Google Maps SDK 上的当前位置按钮?

微信小程序获取位置信息

flutter混合开发怎么调试

Flutter引擎介绍

只要状态没有被授予,如何一直询问位置权限-Flutter