play_video_dialog.dart 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. import 'package:chewie/chewie.dart';
  2. import 'package:flutter/Material.dart';
  3. import 'package:flutter_screenutil/flutter_screenutil.dart';
  4. import 'package:video_player/video_player.dart';
  5. import 'package:wechat_assets_picker/wechat_assets_picker.dart';
  6. import 'package:get/get.dart';
  7. import '../resource/assets.gen.dart';
  8. void playVideoDialog(AssetEntity asset) async {
  9. try {
  10. final mediaUrl = await asset.getMediaUrl();
  11. if (mediaUrl == null) return;
  12. final videoPlayerController =
  13. VideoPlayerController.networkUrl(Uri.parse(mediaUrl));
  14. await videoPlayerController.initialize();
  15. final chewieController = ChewieController(
  16. videoPlayerController: videoPlayerController,
  17. autoPlay: true,
  18. looping: true,
  19. showOptions: false,
  20. );
  21. Get.dialog(
  22. useSafeArea: false,
  23. Dialog(
  24. insetPadding: EdgeInsets.zero,
  25. backgroundColor: Colors.black,
  26. child: SizedBox(
  27. width: double.infinity,
  28. height: double.infinity,
  29. child: Stack(
  30. children: [
  31. SafeArea(child: Column(
  32. crossAxisAlignment: CrossAxisAlignment.start,
  33. children: [
  34. GestureDetector(
  35. onTap: () {
  36. Get.back();
  37. },
  38. child:Padding(padding: EdgeInsets.only(left: 16.w,top: 16.h),child: Assets.images.iconBackArrow.image(
  39. width: 28.w,
  40. height: 28.h,
  41. )),
  42. ),
  43. Expanded(
  44. child: Chewie(controller: chewieController),
  45. ),
  46. ],
  47. ),),
  48. IgnorePointer(
  49. child: Assets.images.bgHome.image(
  50. width: 360.w,
  51. fit: BoxFit.cover,
  52. ),
  53. ),
  54. ],
  55. ),
  56. ),
  57. ),
  58. barrierDismissible: true,
  59. ).then((_) {
  60. videoPlayerController.dispose();
  61. chewieController.dispose();
  62. });
  63. await videoPlayerController.play();
  64. } catch (e) {
  65. print('Error playing video: $e');
  66. Get.snackbar('Error', 'Failed to play video');
  67. }
  68. }