error_url.dart 2.3 KB

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