initState method
Implementation
@override
void initState() {
super.initState();
widget.initialSelectedSpace.let((p0) {
WidgetsBinding.instance.addPostFrameCallback((Duration duration) {
ref.read(newsStateProvider.notifier).setSpaceId(p0);
});
});
ref.listenManual(newsStateProvider, fireImmediately: true,
(prevState, nextState) async {
final isText = nextState.currentNewsSlide?.type == NewsSlideType.text;
final changed = prevState?.currentNewsSlide != nextState.currentNewsSlide;
if (isText && changed) {
final next = nextState.currentNewsSlide!;
final document = next.html != null
? ActerDocumentHelpers.fromHtml(next.html!)
: ActerDocumentHelpers.fromMarkdown(next.text ?? '');
final autoFocus =
(next.html?.isEmpty ?? true) && (next.text?.isEmpty ?? true);
setState(() {
selectedNewsPost = next;
textEditorState = EditorState(document: document);
});
if (autoFocus) {
WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
// we have switched to an empty text slide: auto focus the editor
textEditorState.updateSelectionWithReason(
Selection.single(
path: [0],
startOffset: 0,
),
reason: SelectionUpdateReason.uiEvent,
);
});
}
} else {
setState(() => selectedNewsPost = nextState.currentNewsSlide);
}
});
}