diff --git a/analysis_options.yaml b/analysis_options.yaml
index 0711aca..aefc435 100644
--- a/analysis_options.yaml
+++ b/analysis_options.yaml
@@ -28,6 +28,7 @@
     - package_api_docs
     - package_names
     - package_prefixed_library_names
+    - prefer_conditional_assignment
     - prefer_equal_for_default_values
     - prefer_final_fields
     - prefer_generic_function_type_aliases
diff --git a/lib/glob.dart b/lib/glob.dart
index c2f7f6f..c43c40f 100644
--- a/lib/glob.dart
+++ b/lib/glob.dart
@@ -52,32 +52,20 @@
   ListTree _listTree;
 
   /// Whether [context]'s current directory is absolute.
-  bool get _contextIsAbsolute {
-    if (_contextIsAbsoluteCache == null) {
-      _contextIsAbsoluteCache = context.isAbsolute(context.current);
-    }
-    return _contextIsAbsoluteCache;
-  }
+  bool get _contextIsAbsolute =>
+      _contextIsAbsoluteCache ??= context.isAbsolute(context.current);
 
   bool _contextIsAbsoluteCache;
 
   /// Whether [pattern] could match absolute paths.
-  bool get _patternCanMatchAbsolute {
-    if (_patternCanMatchAbsoluteCache == null) {
-      _patternCanMatchAbsoluteCache = _ast.canMatchAbsolute;
-    }
-    return _patternCanMatchAbsoluteCache;
-  }
+  bool get _patternCanMatchAbsolute =>
+      _patternCanMatchAbsoluteCache ??= _ast.canMatchAbsolute;
 
   bool _patternCanMatchAbsoluteCache;
 
   /// Whether [pattern] could match relative paths.
-  bool get _patternCanMatchRelative {
-    if (_patternCanMatchRelativeCache == null) {
-      _patternCanMatchRelativeCache = _ast.canMatchRelative;
-    }
-    return _patternCanMatchRelativeCache;
-  }
+  bool get _patternCanMatchRelative =>
+      _patternCanMatchRelativeCache ??= _ast.canMatchRelative;
 
   bool _patternCanMatchRelativeCache;
 
@@ -126,7 +114,7 @@
           "${context.style} paths, but this platform uses ${p.style} paths.");
     }
 
-    if (_listTree == null) _listTree = ListTree(_ast);
+    _listTree ??= ListTree(_ast);
     return _listTree.list(root: root, followLinks: followLinks);
   }
 
@@ -147,7 +135,7 @@
           "${context.style} paths, but this platform uses ${p.style} paths.");
     }
 
-    if (_listTree == null) _listTree = ListTree(_ast);
+    _listTree ??= ListTree(_ast);
     return _listTree.listSync(root: root, followLinks: followLinks);
   }
 
diff --git a/lib/src/ast.dart b/lib/src/ast.dart
index c8f4328..5620c56 100644
--- a/lib/src/ast.dart
+++ b/lib/src/ast.dart
@@ -44,9 +44,7 @@
 
   /// Returns whether this glob matches [string].
   bool matches(String string) {
-    if (_regExp == null) {
-      _regExp = RegExp('^${_toRegExp()}\$', caseSensitive: caseSensitive);
-    }
+    _regExp ??= RegExp('^${_toRegExp()}\$', caseSensitive: caseSensitive);
     return _regExp.hasMatch(string);
   }
 
@@ -122,7 +120,7 @@
     List<AstNode> currentComponent;
 
     addNode(AstNode node) {
-      if (currentComponent == null) currentComponent = [];
+      currentComponent ??= [];
       currentComponent.add(node);
     }
 
