import 'package:better_player/better_player.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:teso/Classes/API%20Clasess/CouponDetails.dart'; import 'package:teso/Classes/API%20Clasess/Post.dart'; import 'package:teso/Pages/Sub_Pages/ProductDetails/CouponList.dart'; import 'package:teso/providers/user_provider.dart'; const ASPECT_RATIO = 16 / 9; class VideoPlayerWidget extends StatefulWidget { final BetterPlayerController controller; final Post ad; final bool play; final List details; const VideoPlayerWidget({ Key key, @required this.controller, @required this.ad, @required this.play, this.details, }) : assert(controller != null), assert(ad != null), super(key: key); @override _VideoPlayerWidgetState createState() => _VideoPlayerWidgetState(); } class _VideoPlayerWidgetState extends State { bool displayed = false; @override void initState() { widget.controller.videoPlayerController.addListener(() => checkVideo()); super.initState(); // if (widget.play) { // _chewieController.play(); // } } checkVideo() async { // Implement your calls inside these conditions' bodies : if (widget.controller.videoPlayerController.value.position == Duration(seconds: 0, minutes: 0, hours: 0)) { // print('video Started'); Provider.of(context, listen: false).viewPost(widget.ad); } if (widget.controller.videoPlayerController.value.position.inSeconds > (widget.controller.videoPlayerController.value.duration.inSeconds) / 3) { // print('video Ended'); if (!displayed && widget.details.length > 0) { setState(() { displayed = true; }); await Navigator.of(context).push( PageRouteBuilder( opaque: false, pageBuilder: (_, __, ___) => CouponList( couponsList: widget.details, ), ), ); } // _chewieController.play(); } } // @override // void didUpdateWidget(VideoPlayerWidget oldWidget) { // if (oldWidget.play != widget.play) { // if (widget.play) { // _chewieController.play(); // } else { // _chewieController.pause(); // } // } // super.didUpdateWidget(oldWidget); // } @override Widget build(BuildContext context) { return FittedBox( clipBehavior: Clip.hardEdge, child: SizedBox( width: MediaQuery.of(context).size.width, height: MediaQuery.of(context).size.height, child: BetterPlayer( controller: widget.controller, ), ), ); } @override void dispose() { widget.controller.dispose(); super.dispose(); } }