You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
93 lines
2.5 KiB
93 lines
2.5 KiB
import 'package:bytedesk_kefu/vendors/chewie/chewie.dart';
|
|
import 'package:flutter/material.dart';
|
|
import 'package:video_player/video_player.dart';
|
|
|
|
class VideoPlayPage extends StatefulWidget {
|
|
final String? videoUrl;
|
|
final String? title;
|
|
const VideoPlayPage({this.title = '视频播放', @required this.videoUrl});
|
|
|
|
@override
|
|
State<StatefulWidget> createState() {
|
|
return _VideoPlayPageState();
|
|
}
|
|
}
|
|
|
|
class _VideoPlayPageState extends State<VideoPlayPage> {
|
|
//
|
|
// TargetPlatform _platform;
|
|
VideoPlayerController? _videoPlayerController1;
|
|
ChewieController? _chewieController;
|
|
String? _videoUrl;
|
|
|
|
@override
|
|
void initState() {
|
|
_videoUrl = widget.videoUrl;
|
|
super.initState();
|
|
initializePlayer();
|
|
}
|
|
|
|
Future<void> initializePlayer() async {
|
|
_videoPlayerController1 = VideoPlayerController.network(_videoUrl!);
|
|
await _videoPlayerController1!.initialize();
|
|
_chewieController = ChewieController(
|
|
videoPlayerController: _videoPlayerController1!,
|
|
autoPlay: true,
|
|
// looping: false,
|
|
// Try playing around with some of these other options:
|
|
// showControls: true,
|
|
// materialProgressColors: ChewieProgressColors(
|
|
// playedColor: Colors.red,
|
|
// handleColor: Colors.blue,
|
|
// backgroundColor: Colors.grey,
|
|
// bufferedColor: Colors.lightGreen,
|
|
// ),
|
|
// placeholder: Container(
|
|
// color: Colors.grey,
|
|
// ),
|
|
autoInitialize: true,
|
|
);
|
|
setState(() {});
|
|
}
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return Scaffold(
|
|
appBar: AppBar(
|
|
title: Text(widget.title!),
|
|
centerTitle: true,
|
|
elevation: 0,
|
|
),
|
|
body: Column(
|
|
children: <Widget>[
|
|
Expanded(
|
|
child: Center(
|
|
child: _chewieController != null &&
|
|
_chewieController!
|
|
.videoPlayerController.value.isInitialized
|
|
? Chewie(
|
|
controller: _chewieController!,
|
|
)
|
|
: Column(
|
|
mainAxisAlignment: MainAxisAlignment.center,
|
|
children: const [
|
|
CircularProgressIndicator(),
|
|
SizedBox(height: 20),
|
|
Text('Loading'),
|
|
],
|
|
),
|
|
),
|
|
),
|
|
],
|
|
),
|
|
);
|
|
}
|
|
|
|
@override
|
|
void dispose() {
|
|
_videoPlayerController1!.dispose();
|
|
_chewieController!.dispose();
|
|
super.dispose();
|
|
}
|
|
}
|