src_error_page.dart 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  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("http://itv.100.ahct.lv1.vcache.cn/100/ott_baseline_kalaok/hd/151/CP0541903573/playlist.m3u8");
  69. },
  70. ),
  71. ),
  72. );
  73. }
  74. }