view.dart 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. // ignore_for_file: avoid_print
  2. import 'package:fis_measure/index.dart';
  3. import 'package:fis_measure/interfaces/process/player/play_controller.dart';
  4. import 'package:fis_measure/interfaces/process/workspace/application.dart';
  5. import 'package:fis_measure/process/workspace/application.dart';
  6. import 'package:fis_vid/data_host/data_host.dart';
  7. import 'package:flutter/material.dart';
  8. import 'package:get/get.dart';
  9. import 'package:vid/us/vid_us_image.dart';
  10. class ImagePlayerView extends StatefulWidget {
  11. const ImagePlayerView({Key? key}) : super(key: key);
  12. @override
  13. _ImagePlayerViewState createState() => _ImagePlayerViewState();
  14. }
  15. class _ImagePlayerViewState extends State<ImagePlayerView> {
  16. IPlayerController? _playerController;
  17. IPlayerController get playerController => _playerController!;
  18. VidDataHost? _vidDataHost;
  19. VidDataHost get dataHost => _vidDataHost!;
  20. List<String> mockData = [
  21. "http://cdn-bj.fis.plus/093BE20682B14BFB95D811F221A2B2FD.vid"
  22. ];
  23. void loadVidDataHost(String url) {
  24. print("${DateTime.now()} Load vid data host");
  25. _vidDataHost = VidDataHost(url);
  26. _playerController = VidPlayerController(dataHost: dataHost);
  27. }
  28. void startPlay() {
  29. print("${DateTime.now()} Click play");
  30. dataHost.load().then((value) {
  31. if (value == null) {
  32. // TOOO: add log
  33. } else {
  34. playerController.setLoadState(value != null);
  35. Future.delayed(const Duration(milliseconds: 100), () {
  36. playerController.play();
  37. });
  38. print("${DateTime.now()} Load vid data host success");
  39. }
  40. });
  41. }
  42. @override
  43. void initState() {
  44. super.initState();
  45. loadVidDataHost(mockData[0]);
  46. }
  47. @override
  48. Widget build(BuildContext context) {
  49. return Scaffold(
  50. appBar: AppBar(
  51. title: const Text('Image Player'),
  52. ),
  53. body: Center(
  54. child: Column(
  55. mainAxisAlignment: MainAxisAlignment.spaceEvenly,
  56. children: [
  57. ElevatedButton(
  58. onPressed: () {
  59. startPlay();
  60. },
  61. child: const Text('Play')),
  62. SizedBox(
  63. width: 500,
  64. height: 500,
  65. child: RepaintBoundary(
  66. child: VidPlayer(
  67. _playerController as VidPlayerController,
  68. ),
  69. ),
  70. ),
  71. ],
  72. ),
  73. ),
  74. );
  75. }
  76. @override
  77. void dispose() {
  78. print("ImagePlayerView dispose");
  79. _playerController?.dispose();
  80. Get.delete<IPlayerController>();
  81. super.dispose();
  82. }
  83. }