123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- import 'package:fis_i18n/i18n.dart';
- import 'package:fis_measure/interfaces/process/player/play_controller.dart';
- import 'package:fis_measure/interfaces/process/workspace/exam_info.dart';
- import 'package:fis_measure/process/workspace/measure_controller.dart';
- import 'package:fis_measure/view/player/controller.dart';
- import 'package:fis_ui/base_define/page.dart';
- import 'package:fis_ui/index.dart';
- import 'package:fis_ui/widgets/functional/text_tooltip.dart';
- import 'package:flutter/material.dart';
- import 'package:get/get.dart';
- class SwitchPlayLoopButton extends StatefulWidget implements FWidget {
- const SwitchPlayLoopButton({
- super.key,
- required this.businessParent,
- });
- final FPage businessParent;
- @override
- State<SwitchPlayLoopButton> createState() => _SwitchRepeatButtonState();
- }
- class _SwitchRepeatButtonState extends State<SwitchPlayLoopButton>
- with TickerProviderStateMixin {
- bool _enableLoop = false;
- final measureController = Get.find<MeasureController>();
- late VidPlayerController playerController;
- @override
- void initState() {
- WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
- if (mounted) {
- _bindPlayerRepeat();
- }
- });
- measureController.imageLoaded.addListener(_onImageLoaded);
- super.initState();
- }
- @override
- void dispose() {
- measureController.imageLoaded.removeListener(_onImageLoaded);
- super.dispose();
- }
- void _onImageLoaded(Object _, ExamImageInfo? e) {
- _bindPlayerRepeat();
- }
- @override
- Widget build(BuildContext context) {
- return FSizedBox(
- width: 60,
- child: FColumn(
- children: [
- FTextTooltip(
- position: DisplayPosition.left,
- textStyle: const TextStyle(fontSize: 16, color: Colors.white),
- height: 36,
- message: i18nBook.measure.loopPlayback.t,
- margin: const EdgeInsets.only(right: 10),
- decoration: BoxDecoration(
- color: Colors.black.withOpacity(1.0),
- borderRadius: BorderRadius.circular(4),
- ),
- child: FInkWell(
- onTap: _onSwitchRepeat,
- child: FContainer(
- height: 34,
- margin: const EdgeInsets.only(
- top: 5,
- ),
- padding:
- const EdgeInsets.symmetric(horizontal: 10, vertical: 5),
- decoration: BoxDecoration(
- color: _enableLoop ? Colors.grey : Colors.transparent,
- borderRadius: BorderRadius.circular(5),
- ),
- child: FIcon(
- Icons.repeat,
- color: _enableLoop ? Colors.white : Colors.white,
- ),
- ),
- ),
- ),
- ],
- ),
- );
- }
- void _onSwitchRepeat() {
- final enableLoop = !_enableLoop;
- playerController.enableLoop = enableLoop;
- setState(() {
- _enableLoop = enableLoop;
- });
- }
- void _bindPlayerRepeat() {
- playerController = Get.find<IPlayerController>() as VidPlayerController;
- setState(() {
- _enableLoop = playerController.enableLoop;
- });
- }
- }
|