in_overlay_page.dart 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. import 'package:flutter/material.dart';
  2. import 'package:ijkplayer_example/i18n/i18n.dart';
  3. import 'package:flutter_ijkplayer/flutter_ijkplayer.dart';
  4. class InOverlayPage extends StatefulWidget {
  5. @override
  6. _InOverlayPageState createState() => _InOverlayPageState();
  7. }
  8. class _InOverlayPageState extends State<InOverlayPage> {
  9. IjkMediaController controller = IjkMediaController();
  10. OverlayEntry entry;
  11. @override
  12. void initState() {
  13. super.initState();
  14. controller.setDataSource(
  15. DataSource.network(
  16. "http://img.ksbbs.com/asset/Mon_1703/05cacb4e02f9d9e.mp4",
  17. ),
  18. autoPlay: true,
  19. );
  20. }
  21. @override
  22. void deactivate() {
  23. super.deactivate();
  24. entry?.remove();
  25. entry = null;
  26. }
  27. @override
  28. void dispose() {
  29. controller?.dispose();
  30. super.dispose();
  31. }
  32. @override
  33. Widget build(BuildContext context) {
  34. return Scaffold(
  35. appBar: AppBar(
  36. title: Text(currentI18n.overlayPageTitle),
  37. ),
  38. body: ListView(
  39. children: <Widget>[
  40. AspectRatio(
  41. child: IjkPlayer(
  42. mediaController: controller,
  43. ),
  44. aspectRatio: 1,
  45. ),
  46. FlatButton(
  47. child: Text("showInOverlay"),
  48. onPressed: showInOverlay,
  49. ),
  50. ],
  51. ),
  52. );
  53. }
  54. void showInOverlay() {
  55. entry = OverlayEntry(builder: (BuildContext context) {
  56. return Align(
  57. alignment: Alignment.bottomCenter,
  58. child: Container(
  59. width: 200,
  60. child: AspectRatio(
  61. aspectRatio: 1,
  62. child: IjkPlayer(
  63. mediaController: controller,
  64. ),
  65. ),
  66. ),
  67. );
  68. });
  69. Overlay.of(context).insert(entry);
  70. }
  71. }