import 'dart:io';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:image_picker/image_picker.dart';
import 'package:video_player/video_player.dart';
void main() {
runApp(
MaterialApp(
home: VideoPicker(),
),
);
}
class VideoPicker extends StatefulWidget {
@override
_VideoPickerState createState() => _VideoPickerState();
}
class _VideoPickerState extends State {
XFile? _pickedFile;
final picker = ImagePicker();
Future getVideo() async {
var v = ImageSource.gallery;
XFile? pickedFile = await picker.pickVideo(source: v);
setState(() {
if (pickedFile != null) {
_pickedFile = pickedFile;
initializeVideo();
} else {
print('No image selected.');
}
});
}
void initializeVideo() {
if (_pickedFile != null) {
if (kIsWeb) {
_controller = VideoPlayerController.network(_pickedFile!.path);
} else {
_controller = VideoPlayerController.file(File(_pickedFile!.path));
}
_controller.initialize().then((value) => setState(() {}));
} else {
_controller = VideoPlayerController.file(File(''));
}
}
late VideoPlayerController _controller;
@override
void initState() {
// TODO: implement initState
super.initState();
initializeVideo();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Image Picker Example'),
),
body: Center(
child: Builder(
builder: (c) {
if (_pickedFile == null) return Text('Select Video!');
return VideoPlayer(_controller);
},
),
),
floatingActionButton: Row(
mainAxisAlignment: MainAxisAlignment.end,
children: [
FloatingActionButton(
onPressed: () {
getVideo();
},
tooltip: 'Pick Video',
child: Icon(Icons.add_a_photo),
),
SizedBox(
width: 20,
),
FloatingActionButton(
onPressed: () {
setState(() {
// If the video is playing, pause it.
if (_controller.value.isPlaying) {
_controller.pause();
} else {
// If the video is paused, play it.
_controller.play();
}
});
},
tooltip: 'Pick Video',
child: Icon(
_controller.value.isPlaying ? Icons.pause : Icons.play_arrow,
),
),
],
));
}
}
image_picker 0.8.5+3
image_picker_for_web 2.1.8
같이