如何创建同时具有内部阴影和渐变填充的卡片

时间:2019-08-14 15:51:56

标签: flutter

我正在尝试创建与此图像(左侧的图像)类似的ListView:

A cool menu UI -请注意,列表的每一行都有从右到左的渐变,而且,从

上方的各行开始,每行顶部的阴影也出现了

但是,出于对邪恶的热爱,我无法让Flutter为Card小部件绘制渐变和内部阴影(从顶部开始)!

在我的脚手架中,我创建了一个ListView,其中包含一堆用于儿童的InkWell。这些InkWell中的每一个都包含一个以容器为子代的卡。这些容器包含一个由一堆文本和东西组成的行。

我尝试了很多技巧来使卡片颜色(BG颜色)和BoxShadow(不幸的是,没有选择仅针对小部件顶部绘制)具有颜色渐变(从centerLeft到centerRight)。 。但是到目前为止,没有什么比我想要的效果更接近。

body: new ListView(
            children: <Widget>[
          new InkWell(
            onTap: () => showContent("Shadows in Flutter? :/"),
            child: new Card(
              elevation: 9.0,
              margin: EdgeInsets.all(0),
              child: new Container(
                  height: 104.0,
                  child: new Row(
                    mainAxisAlignment: MainAxisAlignment.spaceBetween,
                    children: <Widget>[
                      new Container(

                        padding: EdgeInsets.only(left: 2.0, right: 5.0),
                        child: new Text("John Smith",
                            textAlign: TextAlign.center,
                            style: new TextStyle(
                                color: Color.fromARGB(255, 224, 117, 86),),
                      ),
                    ],
                  ),
                  decoration: new BoxDecoration(
                    boxShadow: [
                      new BoxShadow(
                          color: Colors.black,
                          blurRadius: 5.0,
                          offset: Offset(0, 10.0)
                      ),
                    ],
                    gradient: LinearGradient(
                      begin: Alignment.centerLeft,
                      end: Alignment.centerRight,
                      colors: [
                        const Color.fromARGB(255, 254, 225, 111),
                        const Color.fromARGB(255, 232, 206, 96)
                      ],

                      tileMode: TileMode.clamp,
                    ),
                  )),
            ),
          ),

     ----- put a couple of Inkwell's similar to above

阴影绘制不正确, 我无法做出颤抖的动作从Listview的上方元素绘制单个投影

那么,有什么方法可以实现我想要的吗?

1 个答案:

答案 0 :(得分:2)

使用foregroundDecoration添加LinearGradient不是答案,但是可以解决阴影问题

oregroundDecoration: BoxDecoration(
        gradient: LinearGradient(
          begin: Alignment(-1, -1),
          end: Alignment(-1, -0.8),
          colors: [Colors.black26, Colors.transparent],
        ),
      )

enter image description here