Кто-нибудь знает, что мне нужно сделать, чтобы мои видео воспроизводились автоматически после загрузки моего веб-сайта flutter?
Единственное, что мне пока удалось, - это заставить их воспроизводиться / зацикливаться, если я обновляю страницу вручную.
Я уверен, что это что-то простое, но после 3 месяцев, когда я вообще не кодировал, я немного заржавел ...
В данный момент я звоню _videoPlayerController.play()
внутри FutureBuilder
class VideoWithChild extends StatefulWidget {
final String videoSource;
final FractionalOffset alignment;
final TextAlign textAlign;
final Widget child;
const VideoWithChild(
{Key key, this.videoSource, this.alignment, this.textAlign, this.child})
: super(key: key);
@override
_VideoWithChildState createState() =>
_VideoWithChildState(videoSource, alignment, textAlign, child);
}
class _VideoWithChildState extends State<VideoWithChild> {
final String videoSource;
final TextAlign textAlign;
final Widget child;
final FractionalOffset alignment;
VideoPlayerController _videoPlayerController;
Future<void> _initializeVideoPlayerFuture;
VoidCallback listener;
_VideoWithChildState(
this.videoSource, this.alignment, this.textAlign, this.child);
@override
void initState() {
_videoPlayerController = VideoPlayerController.asset(videoSource);
_initializeVideoPlayerFuture = _videoPlayerController.initialize();
super.initState();
}
@override
Widget build(BuildContext context) {
print('build');
return FutureBuilder(
future: _initializeVideoPlayerFuture,
builder: (context, snapshot) {
if (snapshot.connectionState == ConnectionState.done &&
_videoPlayerController.dataSource.isNotEmpty) {
print('connection state');
_videoPlayerController.play();
_videoPlayerController.setLooping(true);
return AspectRatio(
aspectRatio: _videoPlayerController.value.aspectRatio,
child: Stack(
children: <Widget>[
VideoPlayer(_videoPlayerController),
LayoutBuilder(
builder: (context, constraints) {
return Align(alignment: alignment, child: child);
},
)
],
),
);
} else {
return Padding(
padding: const EdgeInsets.all(8.0),
child: Center(
child: CircularProgressIndicator(
valueColor: AlwaysStoppedAnimation<Color>(
Color(0xff49148c),
),
)),
);
}
},
);
}
@override
void dispose() {
print('dispose');
super.dispose();
_videoPlayerController.dispose();
}
}