src_error_page.dart 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. import 'package:flutter/material.dart';
  2. import 'package:flutter_ijkplayer/flutter_ijkplayer.dart';
  3. class VideoWidget extends StatefulWidget {
  4. final String url;
  5. VideoWidget(this.url);
  6. @override
  7. _VideoWidgetState createState() => _VideoWidgetState();
  8. }
  9. class _VideoWidgetState extends State<VideoWidget> with WidgetsBindingObserver {
  10. IjkMediaController controller;
  11. @override
  12. void initState() {
  13. super.initState();
  14. controller = IjkMediaController();
  15. controller.setNetworkDataSource(widget.url, autoPlay: true);
  16. Stream<IjkStatus> ijkStatusStream = controller.ijkStatusStream;
  17. ijkStatusStream.listen((status) {
  18. if (status == IjkStatus.complete) {
  19. controller?.play();
  20. }
  21. });
  22. // SystemChannels.lifecycle.setMessageHandler((msg) {});
  23. }
  24. @override
  25. void didChangeAppLifecycleState(AppLifecycleState state) {
  26. if (state == AppLifecycleState.resumed) {
  27. controller?.play();
  28. } else if (state == AppLifecycleState.paused) {
  29. controller?.pause();
  30. }
  31. }
  32. @override
  33. void deactivate() {
  34. super.deactivate();
  35. controller?.pause();
  36. }
  37. @override
  38. void reassemble() {
  39. super.reassemble();
  40. controller?.play();
  41. }
  42. @override
  43. void dispose() {
  44. super.dispose();
  45. controller?.dispose();
  46. }
  47. @override
  48. Widget build(BuildContext context) {
  49. return IjkPlayer(
  50. mediaController: controller,
  51. controllerWidgetBuilder: (mController) => new Container(),
  52. );
  53. }
  54. }
  55. class SreErrorPage extends StatefulWidget {
  56. @override
  57. _SreErrorPageState createState() => _SreErrorPageState();
  58. }
  59. class _SreErrorPageState extends State<SreErrorPage> {
  60. @override
  61. Widget build(BuildContext context) {
  62. return Scaffold(
  63. appBar: AppBar(),
  64. body: Container(
  65. child: PageView.builder(
  66. itemBuilder: (BuildContext context, int index) {
  67. // return VideoWidget("http://114.55.36.48/1204/27/index$index.m3u8");
  68. return VideoWidget(
  69. "http://itv.100.ahct.lv1.vcache.cn/100/ott_baseline_kalaok/hd/151/CP0541903573/playlist.m3u8");
  70. },
  71. ),
  72. ),
  73. );
  74. }
  75. }