From 9493dba851055f656961d7dc9e2ddcdec4000631 Mon Sep 17 00:00:00 2001
From: Vishesh Handa <me@vhanda.in>
Date: Wed, 19 May 2021 12:39:12 +0200
Subject: [PATCH] Tags AutoCompletion: Null Safety++

---
 lib/editors/autocompletion_widget.dart | 21 +++++++-------
 lib/editors/common.dart                | 22 +++++++--------
 lib/editors/scaffold.dart              | 38 ++++++++++++--------------
 test/autocompletion/tags_test.dart     |  2 --
 4 files changed, 38 insertions(+), 45 deletions(-)

diff --git a/lib/editors/autocompletion_widget.dart b/lib/editors/autocompletion_widget.dart
index 0b315140..e151af13 100644
--- a/lib/editors/autocompletion_widget.dart
+++ b/lib/editors/autocompletion_widget.dart
@@ -1,5 +1,3 @@
-// @dart=2.9
-
 import 'dart:ui';
 
 import 'package:flutter/material.dart';
@@ -16,11 +14,11 @@ class AutoCompletionWidget extends StatefulWidget {
   final Widget child;
 
   AutoCompletionWidget({
-    @required this.textFieldFocusNode,
-    @required this.textFieldKey,
-    @required this.textFieldStyle,
-    @required this.textController,
-    @required this.child,
+    required this.textFieldFocusNode,
+    required this.textFieldKey,
+    required this.textFieldStyle,
+    required this.textController,
+    required this.child,
   });
 
   @override
@@ -28,7 +26,7 @@ class AutoCompletionWidget extends StatefulWidget {
 }
 
 class _AutoCompletionWidgetState extends State<AutoCompletionWidget> {
-  OverlayEntry overlayEntry;
+  OverlayEntry? overlayEntry;
 
   var autoCompleter = TagsAutoCompleter();
 
@@ -83,7 +81,8 @@ class _AutoCompletionWidgetState extends State<AutoCompletionWidget> {
 
     //print('showOverlaidTag: $newText');
 
-    RenderBox renderBox = widget.textFieldKey.currentContext.findRenderObject();
+    RenderBox renderBox =
+        widget.textFieldKey.currentContext!.findRenderObject() as RenderBox;
     // print("render Box: ${renderBox.size}");
 
     TextPainter painter = TextPainter(
@@ -135,7 +134,7 @@ class _AutoCompletionWidgetState extends State<AutoCompletionWidget> {
         ),
       );
     });
-    Overlay.of(context).insert(overlayEntry);
+    Overlay.of(context)!.insert(overlayEntry!);
 
     // Removes the over lay entry from the Overly after 500 milliseconds
     await Future.delayed(5000.milliseconds);
@@ -144,7 +143,7 @@ class _AutoCompletionWidgetState extends State<AutoCompletionWidget> {
 
   void _hideOverlay() {
     if (overlayEntry != null) {
-      overlayEntry.remove();
+      overlayEntry!.remove();
       overlayEntry = null;
     }
   }
diff --git a/lib/editors/common.dart b/lib/editors/common.dart
index 5669c909..35f2f358 100644
--- a/lib/editors/common.dart
+++ b/lib/editors/common.dart
@@ -1,5 +1,3 @@
-// @dart=2.9
-
 import 'dart:io';
 
 import 'package:flutter/material.dart';
@@ -30,8 +28,8 @@ abstract class EditorState with ChangeNotifier {
 }
 
 class TextEditorState {
-  String text;
-  int cursorPos;
+  late String text;
+  late int cursorPos;
 
   TextEditorState(this.text, this.cursorPos);
 
@@ -56,17 +54,17 @@ class EditorAppBar extends StatelessWidget implements PreferredSizeWidget {
   final Editor editor;
   final EditorState editorState;
   final bool noteModified;
-  final IconButton extraButton;
+  final IconButton? extraButton;
   final bool allowEdits;
   final Func0<void> onEditingModeChange;
 
   EditorAppBar({
-    Key key,
-    @required this.editor,
-    @required this.editorState,
-    @required this.noteModified,
-    @required this.allowEdits,
-    @required this.onEditingModeChange,
+    Key? key,
+    required this.editor,
+    required this.editorState,
+    required this.noteModified,
+    required this.allowEdits,
+    required this.onEditingModeChange,
     this.extraButton,
   })  : preferredSize = const Size.fromHeight(kToolbarHeight),
         super(key: key);
@@ -85,7 +83,7 @@ class EditorAppBar extends StatelessWidget implements PreferredSizeWidget {
         },
       ),
       actions: <Widget>[
-        if (extraButton != null) extraButton,
+        if (extraButton != null) extraButton!,
         IconButton(
           icon: allowEdits
               ? const Icon(Icons.remove_red_eye)
diff --git a/lib/editors/scaffold.dart b/lib/editors/scaffold.dart
index a1c06ca5..a8200b9d 100644
--- a/lib/editors/scaffold.dart
+++ b/lib/editors/scaffold.dart
@@ -1,5 +1,3 @@
-// @dart=2.9
-
 import 'dart:developer';
 
 import 'package:flutter/material.dart';
@@ -23,7 +21,7 @@ class EditorScaffold extends StatefulWidget {
   final EditorState editorState;
   final bool noteModified;
   final bool editMode;
-  final IconButton extraButton;
+  final IconButton? extraButton;
   final Widget body;
   final NotesFolderFS parentFolder;
 
@@ -33,19 +31,19 @@ class EditorScaffold extends StatefulWidget {
   final bool undoAllowed;
   final bool redoAllowed;
 
-  final Widget extraBottomWidget;
+  final Widget? extraBottomWidget;
 
   EditorScaffold({
-    @required this.editor,
-    @required this.editorState,
-    @required this.noteModified,
-    @required this.editMode,
-    @required this.body,
-    @required this.parentFolder,
-    @required this.onUndoSelected,
-    @required this.onRedoSelected,
-    @required this.undoAllowed,
-    @required this.redoAllowed,
+    required this.editor,
+    required this.editorState,
+    required this.noteModified,
+    required this.editMode,
+    required this.body,
+    required this.parentFolder,
+    required this.onUndoSelected,
+    required this.onRedoSelected,
+    required this.undoAllowed,
+    required this.redoAllowed,
     this.extraBottomWidget,
     this.extraButton,
   });
@@ -57,13 +55,13 @@ class EditorScaffold extends StatefulWidget {
 class _EditorScaffoldState extends State<EditorScaffold> {
   var hideUIElements = false;
   var editingMode = true;
-  Note note;
+  late Note note;
 
   @override
   void initState() {
     super.initState();
 
-    SchedulerBinding.instance
+    SchedulerBinding.instance!
         .addPostFrameCallback((_) => _initStateWithContext());
   }
 
@@ -146,7 +144,7 @@ class _EditorScaffoldState extends State<EditorScaffold> {
               log("local section link: " + section.toString());
             },
             onSectionLongPress: (OrgSection section) {
-              log('local section long-press: ' + section.headline.rawTitle);
+              log('local section long-press: ' + section.headline.rawTitle!);
             },
           );
           break;
@@ -201,14 +199,14 @@ class _EditorScaffoldState extends State<EditorScaffold> {
                     }
                   });
                 },
-                metaDataEditable: note != null ? note.canHaveMetadata : false,
+                metaDataEditable: note.canHaveMetadata,
                 onUndoSelected: widget.onUndoSelected,
                 onRedoSelected: widget.onRedoSelected,
                 undoAllowed: widget.undoAllowed,
                 redoAllowed: widget.redoAllowed,
               ),
             ),
-            if (widget.extraBottomWidget != null) widget.extraBottomWidget,
+            if (widget.extraBottomWidget != null) widget.extraBottomWidget!,
           ],
         ),
       ),
@@ -220,7 +218,7 @@ class _AnimatedOpacityIgnorePointer extends StatelessWidget {
   final bool visible;
   final Widget child;
 
-  _AnimatedOpacityIgnorePointer({@required this.visible, @required this.child});
+  _AnimatedOpacityIgnorePointer({required this.visible, required this.child});
 
   @override
   Widget build(BuildContext context) {
diff --git a/test/autocompletion/tags_test.dart b/test/autocompletion/tags_test.dart
index 0c9f8160..9fe1eb1f 100644
--- a/test/autocompletion/tags_test.dart
+++ b/test/autocompletion/tags_test.dart
@@ -1,5 +1,3 @@
-// @dart=2.9
-
 import 'package:test/test.dart';
 
 import 'package:gitjournal/editors/autocompletion_widget.dart';