error_url.dart 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. import 'dart:async';
  2. import 'package:flutter/material.dart';
  3. import 'package:flutter_ijkplayer/flutter_ijkplayer.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. }
  26. @override
  27. void dispose() {
  28. statusSub?.cancel();
  29. ijkErrorSub?.cancel();
  30. editingController.dispose();
  31. mediaController.dispose();
  32. super.dispose();
  33. }
  34. @override
  35. Widget build(BuildContext context) {
  36. return Scaffold(
  37. appBar: AppBar(
  38. title: Text(currentI18n.networkButton),
  39. ),
  40. body: ListView(
  41. children: <Widget>[
  42. Row(
  43. children: <Widget>[
  44. Expanded(
  45. child: TextField(
  46. controller: editingController,
  47. ),
  48. ),
  49. FlatButton(
  50. child: Text(currentI18n.play),
  51. onPressed: _playInput,
  52. ),
  53. ],
  54. ),
  55. Container(
  56. height: 400,
  57. child: IjkPlayer(
  58. mediaController: mediaController,
  59. ),
  60. ),
  61. ],
  62. ),
  63. );
  64. }
  65. void _playInput() async {
  66. var text = editingController.text;
  67. await mediaController.setNetworkDataSource(text, autoPlay: true);
  68. }
  69. }