Closed AhmedAlaaGenina closed 2 weeks ago
I have the same issue !
class PersistentVideoPlayer extends StatefulWidget {
final VideosModel videosModel;
const PersistentVideoPlayer({
super.key,
required this.videosModel,
});
@override
State<PersistentVideoPlayer> createState() => PersistentVideoPlayerState();
}
class PersistentVideoPlayerState extends State<PersistentVideoPlayer>
with AutomaticKeepAliveClientMixin {
late YPlayer videoPlayer;
@override
bool get wantKeepAlive => true;
@override
void initState() {
super.initState();
videoPlayer = YPlayer(
controller: context.read<VideosProvider>().ytController,
);
}
@override
Widget build(BuildContext context) {
super.build(context);
return videoPlayer;
}
}
class VideoPdfWidget extends StatefulWidget {
const VideoPdfWidget({
super.key,
required this.videosModel,
});
final VideosModel videosModel;
@override
State<VideoPdfWidget> createState() => _VideoPdfWidgetState();
}
class _VideoPdfWidgetState extends State<VideoPdfWidget> {
late final GlobalKey<PersistentVideoPlayerState> videoPlayerKey;
@override
void initState() {
super.initState();
videoPlayerKey = GlobalKey<PersistentVideoPlayerState>();
context.read<VideosProvider>().initMultiSplitViewController(
videosModel: widget.videosModel,
videoPlayerKey: videoPlayerKey,
);
}
@override
Widget build(BuildContext context) {
return Consumer<VideosProvider>(
builder: (context, videosProvider, child) {
return OrientationBuilder(
builder: (context, orientation) {
final isLandscape = orientation == Orientation.landscape;
final isMobile = context.isMobile;
if (!isLandscape || isMobile) {
return VideoContentLayout(
videosModel: widget.videosModel,
videoPlayerKey: videoPlayerKey,
);
}
return MultiSplitViewTheme(
data: MultiSplitViewThemeData(
dividerPainter: DividerPainters.grooved1(
color: Colors.indigo[100]!,
highlightedColor: Colors.indigo[900]!),
),
child: MultiSplitView(
controller: videosProvider.multiSplitViewController,
),
);
},
);
},
);
}
}
class VideoContentLayout extends StatelessWidget {
final VideosModel videosModel;
final GlobalKey<PersistentVideoPlayerState> videoPlayerKey;
const VideoContentLayout({
super.key,
required this.videosModel,
required this.videoPlayerKey,
});
@override
Widget build(BuildContext context) {
return Consumer2<VideosProvider, CommentsProvider>(
builder: (context, videosProvider, commentsProvider, child) {
return SingleChildScrollView(
child: Column(
mainAxisAlignment: MainAxisAlignment.start,
children: [
PersistentVideoPlayer(
key: videoPlayerKey,
videosModel: videosModel,
),
Visibility(
visible: !commentsProvider.showComments,
replacement: CommentsSection(
commentsProvider: commentsProvider,
videosModel: videosModel,
),
child: RattingButtonsSection(
commentsProvider: commentsProvider,
videosModel: videosModel,
),
),
],
),
);
},
);
}
}
**I create class to handle player that get link of youtube using youtube_explode_dart package then get link to show in my player
her is my code**
and I use the code in provider like this
**and my ui call startVideo() in my didChangeDependencies()
and call player in UI**
YouTubePlayer(controller: videosProvider.ytController),
Full error
can anyone help with this i searched about that for 2 days any help please