Hibok
Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.
 
 
 
 
 
 

60 rindas
1.4 KiB

  1. import 'package:chat/utils/CustomUI.dart';
  2. import 'package:flutter/material.dart';
  3. class VideoAnim extends StatefulWidget {
  4. final double begin;
  5. final int maxTime;
  6. final double end;
  7. final double start;
  8. VideoAnim({
  9. this.begin,
  10. this.maxTime = 550,
  11. this.end,
  12. this.start = 0,
  13. });
  14. @override
  15. _VideoAnimState createState() => _VideoAnimState();
  16. }
  17. class _VideoAnimState extends State<VideoAnim>
  18. with SingleTickerProviderStateMixin {
  19. Animation<double> _animation;
  20. AnimationController _controller;
  21. @override
  22. void initState() {
  23. super.initState();
  24. // 启动动画controller
  25. _controller = new AnimationController(
  26. duration: Duration(milliseconds: widget.maxTime), vsync: this);
  27. _controller.addStatusListener((AnimationStatus status) {
  28. if (status == AnimationStatus.completed) {
  29. _controller.reverse();
  30. } else if (status == AnimationStatus.dismissed) {
  31. _controller.forward();
  32. }
  33. });
  34. _animation = new Tween<double>(begin: widget.begin, end: widget.end)
  35. .animate(_controller)
  36. ..addListener(() {
  37. setState(() {});
  38. });
  39. _controller.forward(from: widget.start);
  40. }
  41. @override
  42. void dispose() {
  43. _controller.stop();
  44. _controller.dispose();
  45. super.dispose();
  46. }
  47. @override
  48. Widget build(BuildContext context) {
  49. return CustomUI.buildAudioContaniner(_animation.value);
  50. }
  51. }