control_board.dart 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. import 'dart:convert';
  2. import 'dart:math';
  3. import 'package:fis_i18n/i18n.dart';
  4. import 'package:fis_jsonrpc/services/aIDiagnosis.m.dart';
  5. import 'package:fis_measure/interfaces/process/player/play_controller.dart';
  6. import 'package:fis_measure/process/workspace/measure_data_controller.dart';
  7. import 'package:fis_ui/index.dart';
  8. import 'package:flutter/material.dart';
  9. import 'package:get/get.dart';
  10. import '../controller.dart';
  11. import '../events.dart';
  12. part 'play_btn.dart';
  13. part 'prev_btn.dart';
  14. part 'next_btn.dart';
  15. part 'progress_bar.dart';
  16. class MySlideTransition extends AnimatedWidget {
  17. const MySlideTransition({
  18. Key? key,
  19. required Animation<Offset> position,
  20. this.transformHitTests = true,
  21. required this.child,
  22. }) : super(key: key, listenable: position);
  23. final bool transformHitTests;
  24. final Widget child;
  25. @override
  26. Widget build(BuildContext context) {
  27. final position = listenable as Animation<Offset>;
  28. Offset offset = position.value;
  29. if (position.status == AnimationStatus.reverse) {
  30. offset = Offset(-offset.dx, offset.dy);
  31. }
  32. return FractionalTranslation(
  33. translation: offset,
  34. transformHitTests: transformHitTests,
  35. child: child,
  36. );
  37. }
  38. }
  39. class VidPlayerControlBoard extends StatefulWidget {
  40. const VidPlayerControlBoard(this.controller, {Key? key}) : super(key: key);
  41. final VidPlayerController controller;
  42. @override
  43. State<VidPlayerControlBoard> createState() => _VidPlayerControlBoardState();
  44. }
  45. class _VidPlayerControlBoardState extends State<VidPlayerControlBoard> {
  46. @override
  47. Widget build(BuildContext context) {
  48. return _SharedWidget(
  49. controller: widget.controller,
  50. child: Container(
  51. padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 10),
  52. child: Column(
  53. mainAxisAlignment: MainAxisAlignment.center,
  54. children: [
  55. _buildPlayStatusBar(),
  56. ],
  57. ),
  58. ),
  59. );
  60. }
  61. Widget _buildPlayStatusBar() {
  62. return Expanded(
  63. child: AnimatedSwitcher(
  64. duration: const Duration(seconds: 1),
  65. child: Row(
  66. mainAxisSize: MainAxisSize.min,
  67. crossAxisAlignment: CrossAxisAlignment.center,
  68. children: [
  69. _PlayButton(),
  70. const SizedBox(width: 12),
  71. _PrevButton(),
  72. const SizedBox(width: 2),
  73. Expanded(child: _ProgressBar()),
  74. const SizedBox(width: 2),
  75. _NextButton(),
  76. ],
  77. ),
  78. ),
  79. );
  80. }
  81. }
  82. class _SharedWidget extends InheritedWidget {
  83. const _SharedWidget({
  84. required Widget child,
  85. required this.controller,
  86. }) : super(child: child);
  87. final VidPlayerController controller;
  88. static _SharedWidget? of(BuildContext context) {
  89. try {
  90. final data = context.dependOnInheritedWidgetOfExactType<_SharedWidget>();
  91. return data;
  92. } catch (e) {
  93. //
  94. }
  95. return null;
  96. }
  97. @override
  98. bool updateShouldNotify(covariant InheritedWidget oldWidget) => false;
  99. }