screen_shot_page.dart 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. import 'dart:typed_data';
  2. import 'dart:async';
  3. import 'package:flutter/material.dart';
  4. import 'package:flutter_ijkplayer/flutter_ijkplayer.dart';
  5. import 'package:ijkplayer_example/i18n/i18n.dart';
  6. import 'dart:ui' as ui;
  7. class ScreenShotPage extends StatefulWidget {
  8. @override
  9. _ScreenShotPageState createState() => _ScreenShotPageState();
  10. }
  11. class _ScreenShotPageState extends State<ScreenShotPage> {
  12. IjkMediaController mediaController = IjkMediaController();
  13. ImageProvider provider;
  14. @override
  15. void initState() {
  16. super.initState();
  17. mediaController.setDataSource(
  18. DataSource.network(
  19. "http://img.ksbbs.com/asset/Mon_1703/05cacb4e02f9d9e.mp4"),
  20. autoPlay: true);
  21. }
  22. @override
  23. void dispose() {
  24. mediaController.dispose();
  25. super.dispose();
  26. }
  27. @override
  28. Widget build(BuildContext context) {
  29. return Scaffold(
  30. appBar: AppBar(
  31. title: Text(currentI18n.screenshotTitle),
  32. ),
  33. body: ListView(
  34. children: <Widget>[
  35. AspectRatio(
  36. aspectRatio: 1280 / 720,
  37. child: IjkPlayer(
  38. mediaController: mediaController,
  39. ),
  40. ),
  41. FlatButton(
  42. child: Text(currentI18n.screenshotTitle),
  43. onPressed: () async {
  44. var uint8List = await mediaController.screenShot();
  45. if (uint8List == null) {
  46. return;
  47. }
  48. provider = MemoryImage(uint8List);
  49. setState(() {});
  50. },
  51. ),
  52. provider == null
  53. ? Container()
  54. : Image(
  55. image: provider,
  56. ),
  57. ],
  58. ),
  59. );
  60. }
  61. }
  62. Future<Size> getImageForUint8List(Uint8List imageSrc) {
  63. Completer<Size> completer = Completer();
  64. ui.decodeImageFromList(imageSrc, (img) {
  65. completer.complete(Size(img.width.toDouble(), img.height.toDouble()));
  66. img.dispose();
  67. });
  68. return completer.future;
  69. }