Flutter震动动画效果插件shake_animation_widget的使用
Flutter震动动画效果插件shake_animation_widget的使用
1. 抖动效果
/// 构建抖动效果
ShakeAnimationWidget buildShakeAnimationWidget() {
return ShakeAnimationWidget(
// 抖动控制器
shakeAnimationController: _shakeAnimationController,
// 微旋转的抖动
shakeAnimationType: ShakeAnimationType.SkewShake,
// 设置不开启抖动
isForward: false,
// 默认为 0 无限执行
shakeCount: 0,
// 抖动的幅度 取值范围为[0,1]
shakeRange: 0.2,
// 执行抖动动画的子Widget
child: RaisedButton(
child: Text(
'测试',
style: TextStyle(color: Colors.white),
),
onPressed: () {
/// 判断抖动动画是否正在执行
if (_shakeAnimationController.animationRunging) {
/// 停止抖动动画
_shakeAnimationController.stop();
} else {
/// 开启抖动动画
/// 参数shakeCount 用来配置抖动次数
/// 通过 controller start 方法默认为 1
_shakeAnimationController.start(shakeCount: 1);
}
},
),
);
}
2. 抖动的文本
buildTextAnimationWidget() {
return ShakeTextAnimationWidget(
// 需要设置抖动效果的文本
animationString: "这里是文字的抖动",
space: 1.0,
// 字符间距
runSpace: 10,
// 行间距
// 文字的样式
textStyle: const TextStyle(
/// 文字的大小
fontSize: 25,
),
// 抖动次数
shakeCount: 0,
);
}
3. 防开源中国自定义底部菜单
BottomRoundFlowMenu(
// 图标使用的背景
defaultBackgroundColor: Colors.white,
// 菜单所有的图标
iconList: iconList,
// 对应菜单项点击事件回调
clickCallBack: (int index) {
print("点击了 $index");
},
)
4. 动画按钮
AnimatedStatusController animatedStatusController = new AnimatedStatusController();
// 切换样式的动画按钮
Widget buildAnimatedStatusButton() {
return AnimatedStatusButton(
// 控制器
animatedStatusController: animatedStatusController,
// 显示按钮的宽度
width: 220.0,
// 显示按钮的高度
height: 40,
// 动画交互时间
buttonText: '提交',
// 背景颜色
backgroundNormalColor: Colors.white,
// 边框颜色
borderNormalColor: Colors.deepOrange,
// 文字颜色
textNormalCcolor: Colors.deepOrange,
// 点击回调
clickCallback: () async {
print("点击事件回调");
// 模拟耗时操作
await Future.delayed(Duration(milliseconds: 4000));
// 返回false 会一直在转圈圈
// 返回true 会回到到默认显示样式
return Future.value(false);
},
);
}
5. 垂直向上弹出菜单
RoteFlowButtonMenu(
// 图标使用的背景
defaultBackgroundColor: Colors.deepOrangeAccent,
// 菜单所有的图标
iconList: iconList,
// 对应菜单项点击事件回调
clickCallBack: (int index) {
print("点击了 $index");
},
)
6. 页面悬浮可托动按钮
class _Exam223HomePageState extends State<Exam223HomePage> {
// Stack使用的Key
final GlobalKey _parentKey = GlobalKey();
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
body: SizedBox(
width: double.infinity,
height: double.infinity,
child: Stack(
key: _parentKey,
children: [
Container(color: Colors.blueGrey),
DraggableFloatingActionButton(
child: Container(
width: 60,
height: 60,
decoration: const ShapeDecoration(
shape: CircleBorder(),
color: Colors.white,
),
child: const Icon(Icons.add),
),
initialOffset: const Offset(120, 70),
parentKey: _parentKey,
onPressed: () {},
),
],
),
),
);
}
}
更多关于Flutter震动动画效果插件shake_animation_widget的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
1 回复
更多关于Flutter震动动画效果插件shake_animation_widget的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是如何在Flutter项目中使用shake_animation_widget
插件来实现震动动画效果的示例代码。
首先,你需要在你的pubspec.yaml
文件中添加shake_animation_widget
依赖:
dependencies:
flutter:
sdk: flutter
shake_animation_widget: ^x.y.z # 请替换为最新的版本号
然后,运行flutter pub get
来安装依赖。
安装完成后,你可以在你的Flutter项目中导入并使用ShakeAnimationWidget
。下面是一个简单的示例代码,展示了如何使用这个插件:
import 'package:flutter/material.dart';
import 'package:shake_animation_widget/shake_animation_widget.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: ShakeAnimationExample(),
);
}
}
class ShakeAnimationExample extends StatefulWidget {
@override
_ShakeAnimationExampleState createState() => _ShakeAnimationExampleState();
}
class _ShakeAnimationExampleState extends State<ShakeAnimationExample> {
bool isShaking = false;
void triggerShake() {
setState(() {
isShaking = true;
// 延迟一段时间后停止震动,模拟触发后震动一次的效果
Future.delayed(Duration(seconds: 1), () {
setState(() {
isShaking = false;
});
});
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Shake Animation Example'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
ShakeAnimationWidget(
shakeAnimationType: ShakeAnimationType.BOUNCE, // 震动类型
animationDuration: 1000, // 震动持续时间(毫秒)
shakeOffset: 20.0, // 震动偏移量
child: Container(
width: 100,
height: 100,
color: Colors.blue,
child: Center(
child: Text(
'Shake Me',
style: TextStyle(color: Colors.white, fontSize: 20),
),
),
),
shouldShake: isShaking, // 控制是否震动
),
SizedBox(height: 20),
ElevatedButton(
onPressed: triggerShake,
child: Text('Trigger Shake'),
),
],
),
),
);
}
}
在这个示例中,我们创建了一个简单的Flutter应用,其中包含一个可以震动的Container
和一个按钮。点击按钮后,Container
会执行震动动画。
ShakeAnimationWidget
是实现震动效果的组件。shakeAnimationType
定义了震动的类型(例如,弹跳、摇摆等)。animationDuration
定义了震动动画的持续时间。shakeOffset
定义了震动的偏移量。shouldShake
是一个布尔值,用于控制是否执行震动动画。
当你点击“Trigger Shake”按钮时,isShaking
状态会被设置为 true
,触发震动动画,并在1秒后自动停止震动。
希望这个示例能帮助你理解如何在Flutter项目中使用shake_animation_widget
插件来实现震动动画效果。