Flutter阴影效果插件shadow的使用

发布于 1周前 作者 itying888 来自 Flutter

Flutter阴影效果插件shadow的使用

shadow 是一个简单的Flutter插件,用于为任何Widget添加阴影效果。本文将详细介绍如何使用这个插件,并提供完整的示例代码。

安装步骤

添加依赖

首先,在您的 pubspec.yaml 文件中添加 shadow 依赖:

dependencies:
  shadow: ^1.5.0

安装依赖

您可以从命令行安装包:

使用 pub:

$ pub get

使用 Flutter:

$ flutter pub get

导入包

现在,在您的 Dart 代码中导入该包:

import 'package:shadow/shadow.dart';

基本用法

下面是一个非常简单的例子,展示了如何使用 Shadow 组件包裹一个 FlutterLogo

Shadow(
  child: FlutterLogo(size: 200),
)

属性说明

  • Offset(dx,dy):改变阴影相对于小部件位置的位置。
  • Opacity(double):改变阴影的可见性,范围从 1(完全可见)到 0(完全不可见)。
  • Scale(double):此属性用于更改阴影大小(仅限阴影大小,不是组件本身)。

示例

容器(Container)

这是一个给容器添加阴影的例子:

Shadow(
  child: Container(
    color: Colors.redAccent,
    height: 50,
    width: 50,
  ),
)

Container Shadow

栈(Stack)

以下是如何在栈(Stack)中使用阴影的例子:

Shadow(
  options: ShadowOptions(
    offset: Offset(-10, -10),
  ),
  child: Stack(
    children: <Widget>[
      Container(
        margin: EdgeInsets.only(top: 20),
        color: Colors.redAccent,
        height: 150,
        width: 150,
      ),
      Container(
        margin: EdgeInsets.only(left: 25),
        decoration: BoxDecoration(
          color: Colors.blue,
          borderRadius: BorderRadius.all(Radius.circular(50)),
        ),
        height: 50,
        width: 100,
      ),
    ],
  ),
)

Stack Shadow

图片(Assets)

最后,这里有一个为图片添加阴影的例子:

Shadow(
  options: ShadowOptions(
    offset: Offset(-10, 0),
  ),
  child: Container(
    margin: EdgeInsets.only(left: 100),
    height: 320,
    width: 350,
    child: Center(
      child: Stack(
        children: <Widget>[
          Container(
            margin: EdgeInsets.only(bottom: 0, left: 12, top: 15),
            height: 80,
            width: 80,
            child: Image.asset('assets/images/head.png'),
          ),
          Container(
            margin: EdgeInsets.only(top: 60),
            height: 150,
            width: 150,
            child: Image.asset('assets/images/body.png'),
          ),
          Container(
            margin: EdgeInsets.only(top: 150),
            height: 70,
            width: 350,
            child: Row(
              children: <Widget>[
                Image.asset('assets/images/wheel.png'),
                SizedBox(width: 17),
                Image.asset('assets/images/wheel.png'),
              ],
            ),
          ),
        ],
      ),
    ),
  ),
)

更多关于Flutter阴影效果插件shadow的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter阴影效果插件shadow的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在Flutter中,虽然没有一个专门的插件叫做 shadow 专门用于处理阴影效果,但是Flutter自身已经提供了丰富的功能来创建阴影效果。通常,你可以使用 Containerdecoration 属性,配合 BoxDecorationBoxShadow 来实现阴影效果。

以下是一个使用 BoxShadow 来创建阴影效果的示例代码:

import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Flutter Shadow Effect'),
        ),
        body: Center(
          child: ShadowExample(),
        ),
      ),
    );
  }
}

class ShadowExample extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Column(
      mainAxisAlignment: MainAxisAlignment.center,
      children: <Widget>[
        // 带有阴影效果的容器
        Container(
          width: 200,
          height: 100,
          decoration: BoxDecoration(
            color: Colors.blue,
            borderRadius: BorderRadius.circular(16),
            boxShadow: [
              BoxShadow(
                color: Colors.black.withOpacity(0.5), // 阴影颜色
                spreadRadius: 5, // 阴影扩展半径
                blurRadius: 7, // 阴影模糊半径
                offset: Offset(0, 3), // 阴影偏移
              ),
            ],
          ),
          child: Center(
            child: Text(
              'Shadowed Box',
              style: TextStyle(color: Colors.white),
            ),
          ),
        ),
        SizedBox(height: 20),
        
        // 另一个带有不同阴影效果的容器
        Container(
          width: 200,
          height: 100,
          decoration: BoxDecoration(
            color: Colors.green,
            borderRadius: BorderRadius.circular(16),
            boxShadow: [
              BoxShadow(
                color: Colors.grey.withOpacity(0.3),
                spreadRadius: 2,
                blurRadius: 10,
                offset: Offset(2, 4),
              ),
            ],
          ),
          child: Center(
            child: Text(
              'Another Shadowed Box',
              style: TextStyle(color: Colors.white),
            ),
          ),
        ),
      ],
    );
  }
}

在这个示例中,我们创建了两个带有不同阴影效果的 Container。每个 Container 都有一个 BoxDecoration,其中 boxShadow 属性定义了阴影的具体效果。BoxShadow 类允许你指定阴影的颜色 (color)、扩展半径 (spreadRadius)、模糊半径 (blurRadius) 以及偏移 (offset)。

通过调整这些参数,你可以创建各种样式的阴影效果,以适应你的应用需求。希望这个示例对你有所帮助!

回到顶部