ijk_status_page.dart 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. import 'package:flutter/material.dart';
  2. import 'package:flutter_ijkplayer/flutter_ijkplayer.dart';
  3. import 'package:ijkplayer_example/i18n/i18n.dart';
  4. class IjkStatusPage extends StatefulWidget {
  5. @override
  6. _IjkStatusPageState createState() => _IjkStatusPageState();
  7. }
  8. class _IjkStatusPageState extends State<IjkStatusPage> {
  9. TextEditingController editingController = TextEditingController();
  10. IjkMediaController mediaController = IjkMediaController();
  11. @override
  12. void initState() {
  13. super.initState();
  14. editingController.text =
  15. "http://img.ksbbs.com/asset/Mon_1703/05cacb4e02f9d9e.mp4";
  16. }
  17. @override
  18. void dispose() {
  19. editingController.dispose();
  20. mediaController.dispose();
  21. super.dispose();
  22. }
  23. @override
  24. Widget build(BuildContext context) {
  25. return Scaffold(
  26. appBar: AppBar(
  27. title: Text(currentI18n.ijkStatusTitle),
  28. ),
  29. body: ListView(
  30. children: <Widget>[
  31. Row(
  32. children: <Widget>[
  33. Expanded(
  34. child: TextField(
  35. controller: editingController,
  36. ),
  37. ),
  38. FlatButton(
  39. child: Text(currentI18n.play),
  40. onPressed: _playInput,
  41. ),
  42. ],
  43. ),
  44. AspectRatio(
  45. aspectRatio: 12 / 7,
  46. child: buildIjkPlayer(),
  47. ),
  48. ],
  49. ),
  50. );
  51. }
  52. void _playInput() async {
  53. var text = editingController.text;
  54. await mediaController.setNetworkDataSource(text, autoPlay: true);
  55. }
  56. Widget buildIjkPlayer() {
  57. return IjkPlayer(
  58. mediaController: mediaController,
  59. statusWidgetBuilder: _buildStatusWidget,
  60. );
  61. }
  62. Widget _buildStatusWidget(
  63. BuildContext context,
  64. IjkMediaController controller,
  65. IjkStatus status,
  66. ) {
  67. if (status == IjkStatus.noDatasource) {
  68. return Center(
  69. child: Text(
  70. "no data",
  71. style: TextStyle(color: Colors.white),
  72. ),
  73. );
  74. }
  75. // you can custom your self status widget
  76. return IjkStatusWidget.buildStatusWidget(context, controller, status);
  77. }
  78. }