screen_shot_page.dart 2.0 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. provider = MemoryImage(uint8List);
  46. setState(() {});
  47. var size = await getImageForUint8List(uint8List);
  48. print("width = ${size.width} , height = ${size.height}");
  49. },
  50. ),
  51. provider == null
  52. ? Container()
  53. : Image(
  54. image: provider,
  55. ),
  56. ],
  57. ),
  58. );
  59. }
  60. }
  61. Future<Size> getImageForUint8List(Uint8List imageSrc) {
  62. Completer<Size> completer = Completer();
  63. ui.decodeImageFromList(imageSrc, (img) {
  64. completer.complete(Size(img.width.toDouble(), img.height.toDouble()));
  65. img.dispose();
  66. });
  67. return completer.future;
  68. }