Skip to content

Commit

Permalink
feat: add VideoPlayerWidgetBuilder
Browse files Browse the repository at this point in the history
  • Loading branch information
adar2378 committed Jan 3, 2024
1 parent 6b6fd37 commit 38f844c
Show file tree
Hide file tree
Showing 2 changed files with 71 additions and 1 deletion.
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
import 'package:flutter/material.dart';
import 'package:video_player/video_player.dart';

typedef VideoPlayerWidgetBuilderFunction = Widget Function(
BuildContext context,
VideoPlayerController? controller,
bool isInitialized,
);

class VideoPlayerWidgetBuilder extends StatelessWidget {
const VideoPlayerWidgetBuilder({
required this.builder,
super.key,
this.url,
});
final String? url;
final VideoPlayerWidgetBuilderFunction builder;

@override
Widget build(BuildContext context) => _VideoPlayerWidgetInternal(
url: url,
builder: builder,
);
}

class _VideoPlayerWidgetInternal extends StatefulWidget {
const _VideoPlayerWidgetInternal({
required this.builder,
this.url,
});
final String? url;
final VideoPlayerWidgetBuilderFunction builder;

@override
__VideoPlayerWidgetInternalState createState() =>
__VideoPlayerWidgetInternalState();
}

class __VideoPlayerWidgetInternalState
extends State<_VideoPlayerWidgetInternal> {
VideoPlayerController? _controller;
bool _isInitialized = false;

@override
void initState() {
super.initState();
if (widget.url != null) {
final uri = Uri.tryParse(widget.url!);
if (uri != null) {
_controller = VideoPlayerController.networkUrl(uri)
..initialize().then((_) {
setState(() {
_isInitialized = true;
});
});
}
}
}

@override
void dispose() {
_controller?.dispose();
super.dispose();
}

@override
Widget build(BuildContext context) =>
widget.builder(context, _controller, _isInitialized);
}
3 changes: 2 additions & 1 deletion packages/djangoflow_video_player/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,11 @@ environment:
dependencies:
flutter:
sdk: flutter
video_player: ^2.8.1

dev_dependencies:
flutter_lints: ^3.0.1
flutter_test:
sdk: flutter
flutter_lints: ^3.0.1

flutter:

0 comments on commit 38f844c

Please sign in to comment.