diff --git a/lib/forms/main-form-sections/recitations_data_section.dart b/lib/forms/main-form-sections/recitations_data_section.dart index c3a815d..654a05d 100644 --- a/lib/forms/main-form-sections/recitations_data_section.dart +++ b/lib/forms/main-form-sections/recitations_data_section.dart @@ -103,7 +103,8 @@ class _RecitationsState extends State { Future _doEdit(int index) async { final result = await _edit(widget.narrations.items![index]); - bool reject = result!.reviewStatus == AudioReviewStatus.rejected && + if (result == null) return; + bool reject = result.reviewStatus == AudioReviewStatus.rejected && ((widget.narrations.items![index].reviewStatus == 0) || (widget.narrations.items![index].reviewStatus == 1)); diff --git a/lib/forms/narration_edit.dart b/lib/forms/narration_edit.dart index 96527a1..a20e7b7 100644 --- a/lib/forms/narration_edit.dart +++ b/lib/forms/narration_edit.dart @@ -45,7 +45,9 @@ class _NarrationEditState extends State @override void dispose() { - _player!.dispose(); + if (_player != null) { + _player!.dispose(); + } _titleController.dispose(); _artistNameController.dispose(); _artistUrlController.dispose(); @@ -55,6 +57,7 @@ class _NarrationEditState extends State } String getVerse(RecitationViewModel narration, Duration position) { + if (narration.verses == null) return ''; var verse = narration.verses!.lastWhere( (element) => element.audioStartMilliseconds <= position.inMilliseconds); return verse.verseText; @@ -178,11 +181,11 @@ class _NarrationEditState extends State ControlButtons(_player!, widget.narration, widget.loadingStateChanged, widget.snackbarNeeded), StreamBuilder( - stream: _player!.durationStream, + stream: _player?.durationStream, builder: (context, snapshot) { final duration = snapshot.data ?? Duration.zero; return StreamBuilder( - stream: _player!.positionStream, + stream: _player?.positionStream, builder: (context, snapshot) { var position = snapshot.data ?? Duration.zero; if (position > duration) { @@ -196,6 +199,7 @@ class _NarrationEditState extends State duration: duration, position: position, onChangeEnd: (newPosition) { + if (_player == null) return; _player!.seek(newPosition); }, ),