import 'dart:convert'; import 'dart:math'; import 'package:fis_i18n/i18n.dart'; import 'package:fis_jsonrpc/rpc.dart'; import 'package:fis_measure/interfaces/process/player/play_controller.dart'; import 'package:fis_measure/process/workspace/measure_data_controller.dart'; import 'package:fis_measure/view/paint/ai_patint_controller.dart'; import 'package:fis_ui/index.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:vid/us/vid_us_image.dart'; import '../controller.dart'; import '../events.dart'; import 'streaming_progress_bar_cross.dart'; part 'play_btn.dart'; part 'prev_btn.dart'; part 'next_btn.dart'; part 'progress_bar.dart'; part 'location_info.dart'; class MySlideTransition extends AnimatedWidget { const MySlideTransition({ Key? key, required Animation position, this.transformHitTests = true, required this.child, }) : super(key: key, listenable: position); final bool transformHitTests; final Widget child; @override Widget build(BuildContext context) { final position = listenable as Animation; Offset offset = position.value; if (position.status == AnimationStatus.reverse) { offset = Offset(-offset.dx, offset.dy); } return FractionalTranslation( translation: offset, transformHitTests: transformHitTests, child: child, ); } } class VidPlayerControlBoard extends StatefulWidget { const VidPlayerControlBoard(this.controller, {Key? key}) : super(key: key); final VidPlayerController controller; @override State createState() => _VidPlayerControlBoardState(); } class _VidPlayerControlBoardState extends State { @override Widget build(BuildContext context) { return _SharedWidget( controller: widget.controller, child: Container( // padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 10), child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ _buildPlayStatusBar(), ], ), ), ); } Widget _buildPlayStatusBar() { return Expanded( child: AnimatedSwitcher( duration: const Duration(seconds: 1), child: Row( mainAxisSize: MainAxisSize.min, crossAxisAlignment: CrossAxisAlignment.center, children: [ _PlayButton(), const SizedBox(width: 6), _PrevButton(), _NextButton(), const SizedBox(width: 4), Expanded(child: _ProgressBar()), const SizedBox(width: 10), LocationInfo(), ], ), ), ); } } class _SharedWidget extends InheritedWidget { const _SharedWidget({ required Widget child, required this.controller, }) : super(child: child); final VidPlayerController controller; static _SharedWidget? of(BuildContext context) { try { final data = context.dependOnInheritedWidgetOfExactType<_SharedWidget>(); return data; } catch (e) { // } return null; } @override bool updateShouldNotify(covariant InheritedWidget oldWidget) => false; }