diff --git a/lib/app.dart b/lib/app.dart
index d9416e87..38873993 100644
--- a/lib/app.dart
+++ b/lib/app.dart
@@ -1,5 +1,3 @@
-// @dart=2.9
-
 import 'dart:async';
 import 'dart:io';
 
@@ -116,7 +114,7 @@ class JournalApp extends StatefulWidget {
         Log.i("Running on ios", props: readIosDeviceInfo(info));
       }
     } catch (e) {
-      Log.d(e);
+      Log.d(e.toString());
     }
 
     if (isPhysicalDevice == false) {
@@ -176,11 +174,11 @@ class JournalApp extends StatefulWidget {
 
 class _JournalAppState extends State<JournalApp> {
   final _navigatorKey = GlobalKey<NavigatorState>();
-  String _pendingShortcut;
+  String? _pendingShortcut;
 
-  StreamSubscription _intentDataStreamSubscription;
-  String _sharedText;
-  List<String> _sharedImages;
+  StreamSubscription? _intentDataStreamSubscription;
+  var _sharedText = "";
+  var _sharedImages = <String>[];
 
   @override
   void initState() {
@@ -195,14 +193,14 @@ class _JournalAppState extends State<JournalApp> {
       Log.i("Quick Action Open: $shortcutType");
       if (_navigatorKey.currentState == null) {
         Log.i("Quick Action delegating for after build");
-        WidgetsBinding.instance
+        WidgetsBinding.instance!
             .addPostFrameCallback((_) => _afterBuild(context));
         setState(() {
           _pendingShortcut = shortcutType;
         });
         return;
       }
-      _navigatorKey.currentState.pushNamed("/newNote/$shortcutType");
+      _navigatorKey.currentState!.pushNamed("/newNote/$shortcutType");
     });
 
     quickActions.setShortcutItems(<ShortcutItem>[
@@ -228,7 +226,7 @@ class _JournalAppState extends State<JournalApp> {
 
   void _afterBuild(BuildContext context) {
     if (_pendingShortcut != null) {
-      _navigatorKey.currentState.pushNamed("/newNote/$_pendingShortcut");
+      _navigatorKey.currentState!.pushNamed("/newNote/$_pendingShortcut");
       _pendingShortcut = null;
     }
   }
@@ -239,36 +237,34 @@ class _JournalAppState extends State<JournalApp> {
     }
 
     var handleShare = () {
-      var noText = _sharedText == null || _sharedText.isEmpty;
-      var noImages = _sharedImages == null || _sharedImages.isEmpty;
+      var noText = _sharedText.isEmpty;
+      var noImages = _sharedImages.isEmpty;
       if (noText && noImages) {
         return;
       }
 
       var settings = Provider.of<Settings>(context, listen: false);
       var editor = settings.defaultEditor.toInternalString();
-      _navigatorKey.currentState.pushNamed("/newNote/$editor");
+      _navigatorKey.currentState!.pushNamed("/newNote/$editor");
     };
 
     // For sharing images coming from outside the app while the app is in the memory
     _intentDataStreamSubscription = ReceiveSharingIntent.getMediaStream()
         .listen((List<SharedMediaFile> value) {
-      if (value == null) return;
       Log.d("Received Share $value");
 
-      _sharedImages = value.map((f) => f.path)?.toList();
-      WidgetsBinding.instance.addPostFrameCallback((_) => handleShare());
+      _sharedImages = value.map((f) => f.path).toList();
+      WidgetsBinding.instance!.addPostFrameCallback((_) => handleShare());
     }, onError: (err) {
       Log.e("getIntentDataStream error: $err");
     });
 
     // For sharing images coming from outside the app while the app is closed
     ReceiveSharingIntent.getInitialMedia().then((List<SharedMediaFile> value) {
-      if (value == null) return;
       Log.d("Received Share with App (media): $value");
 
-      _sharedImages = value.map((f) => f.path)?.toList();
-      WidgetsBinding.instance.addPostFrameCallback((_) => handleShare());
+      _sharedImages = value.map((f) => f.path).toList();
+      WidgetsBinding.instance!.addPostFrameCallback((_) => handleShare());
     });
 
     // For sharing or opening text coming from outside the app while the app is in the memory
@@ -276,22 +272,23 @@ class _JournalAppState extends State<JournalApp> {
         ReceiveSharingIntent.getTextStream().listen((String value) {
       Log.d("Received Share $value");
       _sharedText = value;
-      WidgetsBinding.instance.addPostFrameCallback((_) => handleShare());
+      WidgetsBinding.instance!.addPostFrameCallback((_) => handleShare());
     }, onError: (err) {
       Log.e("getLinkStream error: $err");
     });
 
     // For sharing or opening text coming from outside the app while the app is closed
-    ReceiveSharingIntent.getInitialText().then((String value) {
+    ReceiveSharingIntent.getInitialText().then((String? value) {
+      if (value == null) return;
       Log.d("Received Share with App (text): $value");
       _sharedText = value;
-      WidgetsBinding.instance.addPostFrameCallback((_) => handleShare());
+      WidgetsBinding.instance!.addPostFrameCallback((_) => handleShare());
     });
   }
 
   @override
   void dispose() {
-    _intentDataStreamSubscription.cancel();
+    _intentDataStreamSubscription?.cancel();
     super.dispose();
   }
 
@@ -326,9 +323,9 @@ class _JournalAppState extends State<JournalApp> {
       navigatorKey: _navigatorKey,
       title: 'GitJournal',
 
-      localizationsDelegates: EasyLocalization.of(context).delegates,
-      supportedLocales: EasyLocalization.of(context).supportedLocales,
-      locale: EasyLocalization.of(context).locale,
+      localizationsDelegates: EasyLocalization.of(context)!.delegates,
+      supportedLocales: EasyLocalization.of(context)!.supportedLocales,
+      locale: EasyLocalization.of(context)!.locale,
 
       theme: Themes.light,
       darkTheme: Themes.dark,
@@ -344,8 +341,8 @@ class _JournalAppState extends State<JournalApp> {
       onGenerateRoute: (rs) {
         var r = router
             .generateRoute(rs, stateContainer, _sharedText, _sharedImages, () {
-          _sharedText = null;
-          _sharedImages = null;
+          _sharedText = "";
+          _sharedImages = [];
         });
 
         return r;
diff --git a/lib/app_router.dart b/lib/app_router.dart
index 9bf23d01..55d1c6f2 100644
--- a/lib/app_router.dart
+++ b/lib/app_router.dart
@@ -1,5 +1,3 @@
-// @dart=2.9
-
 import 'package:flutter/material.dart';
 
 import 'package:meta/meta.dart';
@@ -56,7 +54,7 @@ class AppRouter {
   final AppSettings appSettings;
   final Settings settings;
 
-  AppRouter({@required this.appSettings, @required this.settings});
+  AppRouter({required this.appSettings, required this.settings});
 
   String initialRoute() {
     var route = '/';
@@ -76,7 +74,7 @@ class AppRouter {
     List<String> sharedImages,
     Function callbackIfUsedShared,
   ) {
-    var route = routeSettings.name;
+    var route = routeSettings.name ?? "";
     if (route == AppRoute.AllFolders ||
         route == AppRoute.AllTags ||
         route == AppRoute.FileSystem) {
@@ -89,7 +87,7 @@ class AppRouter {
           sharedText,
           sharedImages,
           callbackIfUsedShared,
-        ),
+        )!,
         transitionsBuilder: (_, anim, __, child) {
           return FadeTransition(opacity: anim, child: child);
         },
@@ -105,11 +103,11 @@ class AppRouter {
         sharedText,
         sharedImages,
         callbackIfUsedShared,
-      ),
+      )!,
     );
   }
 
-  Widget screenForRoute(
+  Widget? screenForRoute(
     String route,
     GitJournalRepo repository,
     Settings settings,
diff --git a/lib/repository.dart b/lib/repository.dart
index 618de8c0..12199562 100644
--- a/lib/repository.dart
+++ b/lib/repository.dart
@@ -56,10 +56,10 @@ class GitJournalRepo with ChangeNotifier {
   int numChanges = 0;
 
   bool get hasJournalEntries {
-    return notesFolder!.hasNotes;
+    return notesFolder.hasNotes;
   }
 
-  NotesFolderFS? notesFolder;
+  late NotesFolderFS notesFolder;
 
   bool remoteGitRepoConfigured = false;
 
@@ -169,7 +169,7 @@ class GitJournalRepo with ChangeNotifier {
   }
 
   void _loadFromCache() async {
-    await _notesCache.load(notesFolder!);
+    await _notesCache.load(notesFolder);
     Log.i("Finished loading the notes cache");
 
     await _loadNotes();
@@ -179,8 +179,8 @@ class GitJournalRepo with ChangeNotifier {
   Future<void> _loadNotes() async {
     // FIXME: We should report the notes that failed to load
     return _loadLock.synchronized(() async {
-      await notesFolder!.loadRecursively();
-      await _notesCache.buildCache(notesFolder!);
+      await notesFolder.loadRecursively();
+      await _notesCache.buildCache(notesFolder);
 
       var changes = await _gitRepo.numChanges();
       numChanges = changes != null ? changes : 0;
@@ -448,7 +448,7 @@ class GitJournalRepo with ChangeNotifier {
 
     _notesCache.clear();
     remoteGitRepoConfigured = true;
-    notesFolder!.reset(repoPath);
+    notesFolder.reset(repoPath);
 
     settings.folderName = repoFolderName;
     settings.save();
@@ -483,7 +483,7 @@ class GitJournalRepo with ChangeNotifier {
       _gitRepo = GitNoteRepository(gitDirPath: repoPath, settings: settings);
 
       _notesCache.clear();
-      notesFolder!.reset(repoPath);
+      notesFolder.reset(repoPath);
       notifyListeners();
 
       _loadNotes();
@@ -531,7 +531,7 @@ class GitJournalRepo with ChangeNotifier {
       print("Done checking out $branchName");
 
       await _notesCache.clear();
-      notesFolder!.reset(repoPath);
+      notesFolder.reset(repoPath);
       notifyListeners();
 
       _loadNotes();
diff --git a/lib/repository_manager.dart b/lib/repository_manager.dart
index f8c07e7c..08e1e1ea 100644
--- a/lib/repository_manager.dart
+++ b/lib/repository_manager.dart
@@ -1,5 +1,3 @@
-// @dart=2.9
-
 import 'dart:io';
 
 import 'package:flutter/material.dart';
@@ -15,16 +13,16 @@ class RepositoryManager with ChangeNotifier {
   var repoIds = <String>[];
   var currentId = DEFAULT_ID;
 
-  GitJournalRepo _repo;
+  late GitJournalRepo _repo;
 
   final String gitBaseDir;
   final String cacheDir;
   final SharedPreferences pref;
 
   RepositoryManager({
-    @required this.gitBaseDir,
-    @required this.cacheDir,
-    @required this.pref,
+    required this.gitBaseDir,
+    required this.cacheDir,
+    required this.pref,
   }) {
     _load();
     Log.i("Repo Ids $repoIds");
diff --git a/lib/screens/note_editor.dart b/lib/screens/note_editor.dart
index 79d18a46..0b4fad6f 100644
--- a/lib/screens/note_editor.dart
+++ b/lib/screens/note_editor.dart
@@ -49,8 +49,8 @@ import 'package:gitjournal/widgets/rename_dialog.dart';
 class ShowUndoSnackbar {}
 
 class NoteEditor extends StatefulWidget {
-  final Note note;
-  final NotesFolderFS notesFolder;
+  final Note/*!*/ note;
+  final NotesFolderFS/*!*/ notesFolder;
   final NotesFolder parentFolderView;
   final EditorType defaultEditorType;