📅  最后修改于: 2023-12-03 14:58:47.828000             🧑  作者: Mango
颤动水平线是一种在 Dart 中实现的动画效果,它的特点是水平线不断颤动,使得界面效果更加生动。
在 Dart 中使用 Flutter 实现颤动水平线,需要用到 AnimatedBuilder
组件和 Tween
动画来实现动画效果。
import 'package:flutter/material.dart';
class VibratingLine extends StatefulWidget {
const VibratingLine({ Key? key }) : super(key: key);
@override
_VibratingLineState createState() => _VibratingLineState();
}
class _VibratingLineState extends State<VibratingLine> with SingleTickerProviderStateMixin{
late AnimationController _controller;
late Animation _animation;
@override
void initState() {
super.initState();
_controller = AnimationController(
vsync: this,
duration: const Duration(seconds: 1),
)..repeat(reverse: true);
_animation = Tween<double>(begin: 0, end: 50)
.animate(CurvedAnimation(parent: _controller, curve: Curves.easeInOut));
}
@override
void dispose() {
_controller.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return AnimatedBuilder(
animation: _animation,
builder: (BuildContext context, Widget? child) {
return Container(
margin: EdgeInsets.symmetric(vertical: 15),
height: 5,
width: 50,
child: DecoratedBox(
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10),
color: Colors.purple[200]),
child: Transform.translate(
offset: Offset(_animation.value,0),
),
),
);
});
}
}
代码实现了一个 VibratingLine
类似于一个颤动的线条,可以将其嵌入到 Flutter 的组件中进行调用。
可以在其他 Flutter 组件使用 VibratingLine
组件,这里以一个简单的例子说明如何使用。
import 'package:flutter/material.dart';
import 'package:vibrating_line/vibrating_line.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
visualDensity: VisualDensity.adaptivePlatformDensity,
),
home: MyHomePage(),
);
}
}
class MyHomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Flutter Demo Home Page'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(
'Click button below to see vibrating line:',
),
ElevatedButton(
onPressed: () {
showDialog(
context: context,
builder: (context) {
return AlertDialog(
content: VibratingLine(),
);
},
);
},
child: const Text('Show vibrating line')
),
],
),
),
);
}
}
在 MyHomePage
组件中,通过调用 VibratingLine
组件来实现颤动水平线的效果。
Dart 作为 Flutter 的主要编程语言,开发者可以使用 Flutter 的原生组件,结合 Dart 的特征和语法,实现丰富的动画效果。在实现动画效果时,可以通过使用 AnimatedBuilder
和 Tween
来完成颤动水平线的效果。