control_board.dart 3.1 KB

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