Flutter阴影效果插件shadows的使用
Flutter阴影效果插件shadows的使用
工作进度
该插件目前处于开发阶段。它提供了对阴影的多种操作功能。
参考文档
BoxShadowUtils 扩展类
- BoxShadowUtils 提供了对
BoxShadow
的扩展方法,用于通过copyWith
操作阴影。 - copyWith 方法用于替换
BoxShadow
属性。 - "Multiply" this BoxShadow by a Color 未实现。
- "Multiply" this blurRadius by a num 未实现。
- "Add" to this spreadRadius a double smudgeSpread 可以增加阴影的扩散半径。
- "Subtract" from this spreadRadius a double squishSpread 可以减少阴影的扩散半径。
- "Modulate" this offset by Offset offsetScale 可以调整阴影的偏移量。
BoxShadowsUtils 扩展类
- BoxShadowsUtils 提供了对
List<BoxShadow>
的扩展方法,用于批量操作阴影。 - colorize 方法可以为
List<BoxShadow>
添加单个颜色或颜色列表,并可选择保留原透明度。 - rampOpacity 方法可以为
List<BoxShadow>
设置透明度渐变,可以选择同时改变颜色。
Elevation 类
- Elevation 类提供了静态方法来简化生成
BoxDecoration
的过程,从 Flutter 的顶层kElevationToShadow
获取阴影。 - asBoxShadows(double elevation, {Color? color}) 方法根据高度生成阴影列表。
- asBoxDecoration(double elevation, {Color? color}) 方法根据高度生成带有阴影的
BoxDecoration
。
ElevationUtils 扩展类
- ElevationUtils 提供了对
List<BoxShadow>
的扩展方法。 - materialize 方法将标准的材料阴影透明度映射应用到
List<BoxShadow>
上。
示例
Elevation 示例
import 'package:flutter/material.dart';
import 'package:shadows/shadows.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(title: Text('Shadows Example')),
body: Center(
child: Container(
width: 100,
height: 100,
decoration: Elevation.asBoxDecoration(2),
child: Center(child: Text('Elevation 2')),
),
),
),
);
}
}
ElevationUtils 示例
import 'package:flutter/material.dart';
import 'package:shadows/shadows.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(title: Text('ElevationUtils Example')),
body: Center(
child: Container(
width: 100,
height: 100,
decoration: BoxDecoration(
boxShadow: [
BoxShadow(blurRadius: 4.0, color: Colors.black),
BoxShadow(blurRadius: 8.0, color: Colors.grey),
],
).materialize(),
child: Center(child: Text('ElevationUtils Materialize')),
),
),
),
);
}
}
BoxShadowUtils 示例
import 'package:flutter/material.dart';
import 'package:shadows/shadows.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(title: Text('BoxShadowUtils Example')),
body: Center(
child: Container(
width: 100,
height: 100,
decoration: BoxDecoration(
boxShadow: [
BoxShadow(blurRadius: 4.0, color: Colors.black).copyWith(spreadRadius: 2.0),
],
),
child: Center(child: Text('BoxShadowUtils CopyWith')),
),
),
),
);
}
}
BoxShadowsUtils 示例
import 'package:flutter/material.dart';
import 'package:shadows/shadows.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(title: Text('BoxShadowsUtils Example')),
body: Center(
child: Container(
width: 100,
height: 100,
decoration: BoxDecoration(
boxShadow: [
BoxShadow(blurRadius: 4.0, color: Colors.black),
BoxShadow(blurRadius: 8.0, color: Colors.grey),
].colorize(Colors.red),
),
child: Center(child: Text('BoxShadowsUtils Colorize')),
),
),
),
);
}
}
更多关于Flutter阴影效果插件shadows的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
1 回复
更多关于Flutter阴影效果插件shadows的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
在Flutter中,虽然没有一个官方直接名为 shadows
的插件专门用于处理阴影效果,但Flutter本身已经提供了强大的阴影效果支持,主要是通过 Container
的 decoration
属性中的 BoxDecoration
类来设置的。下面是一个如何使用阴影效果的代码示例:
示例代码
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: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
// 使用 Container 和 BoxDecoration 设置阴影效果
Container(
margin: EdgeInsets.all(20.0),
decoration: BoxDecoration(
color: Colors.blue,
borderRadius: BorderRadius.circular(15.0),
boxShadow: [
BoxShadow(
color: Colors.black.withOpacity(0.5),
spreadRadius: 5,
blurRadius: 7,
offset: Offset(0, 3), // changes position of shadow
),
],
),
width: 200,
height: 100,
child: Center(
child: Text(
'Shadow Box',
style: TextStyle(color: Colors.white),
),
),
),
// 使用 Card 小部件并设置阴影效果
Card(
margin: EdgeInsets.all(20.0),
elevation: 10, // 控制阴影的大小
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(15.0),
),
child: Container(
width: 200,
height: 100,
child: Center(
child: Text(
'Elevated Card',
style: TextStyle(color: Colors.black),
),
),
),
),
],
),
),
),
);
}
}
代码说明
-
Container 和 BoxDecoration:
- 使用
Container
小部件,并通过其decoration
属性设置BoxDecoration
。 - 在
BoxDecoration
中,boxShadow
属性接受一个BoxShadow
列表,用于定义阴影效果。 - 每个
BoxShadow
对象可以设置阴影的颜色(color
)、扩散半径(spreadRadius
)、模糊半径(blurRadius
)和偏移量(offset
)。
- 使用
-
Card 小部件:
Card
小部件自带阴影效果,通过elevation
属性控制阴影的大小。shape
属性可以用来设置卡片的形状,这里使用了圆角矩形。
通过上述代码,你可以在Flutter应用中轻松实现带有阴影效果的UI组件。如果你需要更复杂的阴影效果,可以组合使用不同的 BoxShadow
配置,或者结合其他UI组件和布局技巧来实现。