У меня проблема с плагином flutter video_player. Первая проблема заключается в том, что мне нужен эскиз, и я использую для этого video_player, но он каким-то образом инициализируется, а затем не инициализируется во второй сборке.
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:video_player/video_player.dart';
class MyVideoThumbnail extends StatefulWidget {
MyVideoThumbnail({File file}) : videoPlayerController = VideoPlayerController.file(file);
final VideoPlayerController videoPlayerController;
@override
State<StatefulWidget> createState() => _MyVideoThumbnailState();
}
class _MyVideoThumbnailState extends State<MyVideoThumbnail> {
@override
void initState() {
super.initState();
widget.videoPlayerController.addListener(() => setState(() {}));
widget.videoPlayerController.initialize();
}
@override
void dispose() {
super.dispose();
widget.videoPlayerController.dispose();
}
@override
Widget build(BuildContext context) {
print('hashCode:${this.hashCode} - initState:${widget.videoPlayerController.value.initialized}'); // ----> this is the important print statement
return widget.videoPlayerController.value.initialized ?
AspectRatio(
aspectRatio: widget.videoPlayerController.value.aspectRatio,
child: Stack(
alignment: Alignment.bottomRight,
children: <Widget>[
VideoPlayer(widget.videoPlayerController),
Text(
_printDuration(widget.videoPlayerController.value.duration),
style: TextStyle(
color: Colors.grey,
)
)
],
),
) : Padding(
padding: const EdgeInsets.all(25.0),
child: CircularProgressIndicator(),
);
}
String _printDuration(Duration duration) {
if (duration == null) {
return '00:00';
}
String twoDigits(int n) {
if (n >= 10) return "$n";
return "0$n";
}
String twoDigitMinutes = twoDigits(duration.inMinutes.remainder(60));
String twoDigitSeconds = twoDigits(duration.inSeconds.remainder(60));
String twoDigitHours = twoDigits(duration.inHours);
return "${twoDigitHours == '00' ? '' : twoDigitHours + ':'}$twoDigitMinutes:$twoDigitSeconds";
}
}
Важной частью является вывод этого:
flutter: hashCode:203704917 - initState:false
flutter: hashCode:203704917 - initState:true
flutter: hashCode:203704917 - initState:true
flutter: hashCode:203704917 - initState:false
Почему сначала это правда, а потом снова ложь? Что я делаю не так?