error_url.dart 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. import 'package:flutter/material.dart';
  2. import 'package:flutter_ijkplayer/flutter_ijkplayer.dart';
  3. import 'package:ijkplayer_example/const/video_datasource.dart';
  4. import 'package:ijkplayer_example/i18n/i18n.dart';
  5. class ErrorUrlPage extends StatefulWidget {
  6. @override
  7. _ErrorUrlPageState createState() => _ErrorUrlPageState();
  8. }
  9. class _ErrorUrlPageState extends State<ErrorUrlPage> {
  10. TextEditingController editingController = TextEditingController();
  11. IjkMediaController mediaController = IjkMediaController();
  12. // StreamSubscription statusSub;
  13. // StreamSubscription ijkErrorSub;
  14. @override
  15. void initState() {
  16. super.initState();
  17. // editingController.text =
  18. // "https://js.wshls.acgvideo.com/live-js/922199/live_8747041_1741679.m3u8?wsSecret=1337e20698b1673ac73ea8f35e2d60e8&wsTime=1556966389&trid=5afe0383d7d149dabe0c0327c2e53a75&order=1&sig=no";
  19. // statusSub = mediaController.ijkStatusStream.listen((status) {
  20. // print("status = $status");
  21. // });
  22. // ijkErrorSub = mediaController.ijkErrorStream.listen((error) {
  23. // print("error = $error");
  24. // });
  25. mediaController.setDataSource(
  26. VideoDataSource.reportErrorM3u8FromAliyun,
  27. autoPlay: true,
  28. );
  29. }
  30. @override
  31. void dispose() {
  32. // statusSub?.cancel();
  33. // ijkErrorSub?.cancel();
  34. editingController.dispose();
  35. mediaController.dispose();
  36. super.dispose();
  37. }
  38. @override
  39. Widget build(BuildContext context) {
  40. return Scaffold(
  41. appBar: AppBar(
  42. title: Text(currentI18n.networkButton),
  43. ),
  44. body: ListView(
  45. children: <Widget>[
  46. Row(
  47. children: <Widget>[
  48. Expanded(
  49. child: TextField(
  50. controller: editingController,
  51. ),
  52. ),
  53. FlatButton(
  54. child: Text(currentI18n.play),
  55. onPressed: _playInput,
  56. ),
  57. ],
  58. ),
  59. Container(
  60. height: 400,
  61. child: IjkPlayer(
  62. mediaController: mediaController,
  63. ),
  64. ),
  65. ],
  66. ),
  67. );
  68. }
  69. void _playInput() async {
  70. var text = editingController.text;
  71. await mediaController.setNetworkDataSource(text, autoPlay: true);
  72. }
  73. }