initState method

  1. @override
void initState()

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);
    }
  });
}