高程不适用于颤振材料
Posted
技术标签:
【中文标题】高程不适用于颤振材料【英文标题】:Elevation not working on flutter material 【发布时间】:2019-04-17 08:41:31 【问题描述】:我想做一个看起来像 的应用程序,在角落里有那个切片。我可以制作那张幻灯片,但我的应用程序没有那个阴影。
我将我的前层包裹在一个具有高度的材料宽盖内,如示例MDC-104。
这是我的代码
import 'package:flutter/material.dart';
class ShapeLayer extends StatelessWidget
final Widget frontLayer;
final Widget backLayer = Container(
color: Colors.green,
);
ShapeLayer(Key key, this.frontLayer) : super(key: key);
@override
Widget build(BuildContext context)
return Stack(
children: <Widget>[
backLayer,
Material(
elevation: 60.0,
shape: BeveledRectangleBorder(
borderRadius: BorderRadius.only(topLeft: Radius.circular(46.0)),
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: <Widget>[
Expanded(child: frontLayer),
],
),
),
],
);
我是这样使用的:
return Scaffold(
appBar: appBar,
body: ShapeLayer(frontLayer: Container(//Some stuff here)
它看起来像这样:
如您所见,它看起来很平坦,完全没有高程。
我该如何解决这个问题?
谢谢!
编辑:正如@SnakeyHips 建议的那样,这是我的应用程序,海拔为 16.0
【问题讨论】:
【参考方案1】:将您的海拔从60.0
更改为16.0
应该这样做:
import 'package:flutter/material.dart';
class ShapeLayer extends StatelessWidget
final Widget frontLayer;
final Widget backLayer = Container(
color: Colors.green,
);
ShapeLayer(Key key, this.frontLayer) : super(key: key);
@override
Widget build(BuildContext context)
return Stack(
children: <Widget>[
backLayer,
Material(
elevation: 16.0,
shape: BeveledRectangleBorder(
borderRadius: BorderRadius.only(topLeft: Radius.circular(46.0)),
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: <Widget>[
Expanded(child: frontLayer),
],
),
),
],
);
【讨论】:
我试过了,很难说,但我会说它看起来几乎一样。查看我的编辑 它就在那里,只是很难用那种绿色来分辨。如果您将颜色更改为更浅的颜色,它会更明显。 你是对的,如果我放一个浅绿色的背景,我会看到它,但它是非常微妙的东西。你知道有什么方法可以让影子变强吗? 高程量决定了阴影的“强度”,并且由 Material Design 指南决定,所以如果任何高程值没有达到你想要的强度,那么我不确定还有什么建议.高程的概念是在 Shrine 应用程序中显示一个微妙的阴影,任何比这更暗的东西都会违反 Material Design。正如我所说,我建议背面层选择浅色。以上是关于高程不适用于颤振材料的主要内容,如果未能解决你的问题,请参考以下文章