-
Notifications
You must be signed in to change notification settings - Fork 48
/
Copy pathreferences.state.dart
75 lines (46 loc) · 2.04 KB
/
references.state.dart
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
import 'package:flutter/material.dart';
import '../../controller/controllers/editor-controller.dart';
import '../../cursor/controllers/cursor.controller.dart';
import '../../editor/widgets/editor-renderer-inner.dart';
import '../../main.dart';
// References to the various widgets that compose the editor.
// We are forced to operate in this fashion due to the Flutter API.
// Many of these classes have overrides over base class methods.
// Often times we need these overrides to be invoked from other classes.
// To avoid excess prop drilling we cached these references in a dedicated state object.
class ReferencesState {
// === EDITOR CONTROLLER ===
late EditorController _editorController;
EditorController get editorController => _editorController;
void setEditorController(EditorController controller) {
_editorController = controller;
}
// === SCROLL CONTROLLER ===
late ScrollController _scrollController;
ScrollController get scrollController => _scrollController;
void setScrollController(ScrollController controller) {
_scrollController = controller;
}
// === CURSOR CONTROLLER ===
late CursorController _cursorController;
CursorController get cursorController => _cursorController;
void setCursorController(CursorController controller) {
_cursorController = controller;
}
// === EDITOR WIDGET ===
late VisualEditor _editorWidget;
VisualEditor get editor => _editorWidget;
void setEditor(VisualEditor editor) => _editorWidget = editor;
// === EDITOR STATE WIDGET ===
late VisualEditorState _editorWidgetState;
VisualEditorState get editorState => _editorWidgetState;
void setEditorState(VisualEditorState editor) => _editorWidgetState = editor;
// === EDITOR RENDERER ===
late EditorRendererInner _renderer;
EditorRendererInner get renderer => _renderer;
void setRenderer(EditorRendererInner renderer) => _renderer = renderer;
// === FOCUS NODE ===
late FocusNode _focusNode;
FocusNode get focusNode => _focusNode;
void setFocusNode(FocusNode node) => _focusNode = node;
}