chewie
chewie copied to clipboard
Video src cannot be switched in full-screen mode
Future<void> _initController() async {
var list = widget.list;
var originIndex = widget.originIndex;
var teleplayIndex = widget.teleplayIndex;
final originPlayList = list?[originIndex]?.linkList;
final url = originPlayList?[teleplayIndex].link ?? '';
setState(() {
_loading = true;
_error = false;
});
_videoPlayerController = VideoPlayerController.networkUrl(
Uri.parse(url),
)
..addListener(_listener)
..initialize().then(
(value) {
double? videoAspectRatio = _videoPlayerController?.value.aspectRatio;
setState(() {
_loading = false;
_error = false;
});
_chewieController = ChewieController(
videoPlayerController: _videoPlayerController!,
allowFullScreen: true,
autoPlay: true,
looping: false,
autoInitialize: true,
startAt: Duration(seconds: widget.startAt ?? 0),
showControlsOnInitialize: true,
aspectRatio: videoAspectRatio ?? _aspectRatio,
additionalOptions: (context) {
return <OptionItem>[
OptionItem(
onTap: () {
var originIndex = widget.originIndex;
var teleplayIndex = widget.teleplayIndex;
if (teleplayIndex < originPlayList!.length - 1) {
widget.callback(originIndex, teleplayIndex + 1);
}
},
title: 'Next video',
),
];
},
};
setState(() { });
},
).catchError((error) {
// print(error);
setState(() {
_loading = false;
_error = true;
_errorMessage = error.message;
});
});
}
@override
void didUpdateWidget(covariant Player oldWidget) {
super.didUpdateWidget(oldWidget);
if (widget.teleplayIndex != oldWidget.teleplayIndex) {
_videoPlayerController?.dispose();
_initController();
}
}
Result
Abnormal black screen is stuck
Error info
Another exception was thrown: A PlayerNotifier was used after being disposed.
[ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: A PlayerNotifier was used after being disposed.
Once you have called dispose() on a PlayerNotifier, it can no longer be used.
#0 ChangeNotifier.debugAssertNotDisposed.<anonymous closure> (package:flutter/src/foundation/change_notifier.dart:179:9)
#1 ChangeNotifier.debugAssertNotDisposed (package:flutter/src/foundation/change_notifier.dart:186:6)
#2 ChangeNotifier.notifyListeners (package:flutter/src/foundation/change_notifier.dart:412:27)
#3 PlayerNotifier.hideStuff= (package:chewie/src/notifiers/player_notifier.dart:19:5)
#4 _CupertinoControlsState._startHideTimer.<anonymous closure>.<anonymous closure> (package:chewie/src/cupertino/cupertino_controls.dart:787:18)
#5 State.setState (package:flutter/src/widgets/framework.dart:1203:30)
#6 _CupertinoControlsState._startHideTimer.<anonymous closure> (package:chewie/src/cupertino/cupertino_controls.dart:786:7)
#7 Timer._createTimer.<anonymous c<…>