Use null-aware operators in vector_math
diff --git a/lib/src/vector_math/matrix4.dart b/lib/src/vector_math/matrix4.dart
index 94237e8..dafb779 100644
--- a/lib/src/vector_math/matrix4.dart
+++ b/lib/src/vector_math/matrix4.dart
@@ -877,8 +877,8 @@
       sz = x.z;
     } else if (x is double) {
       sx = x;
-      sy = y == null ? x : y.toDouble();
-      sz = z == null ? x : z.toDouble();
+      sy = y ?? x;
+      sz = z ?? x;
     }
     _m4storage[0] *= sx;
     _m4storage[1] *= sx;
@@ -900,8 +900,7 @@
 
   /// Create a copy of [this] scaled by a [Vector3], [Vector4] or [x],[y], and
   /// [z].
-  Matrix4 scaled(dynamic x, [double y = null, double z = null]) =>
-      clone()..scale(x, y, z);
+  Matrix4 scaled(dynamic x, [double y, double z]) => clone()..scale(x, y, z);
 
   /// Zeros [this].
   void setZero() {
diff --git a/lib/src/vector_math/vector2.dart b/lib/src/vector_math/vector2.dart
index 30b6f13..25bef11 100644
--- a/lib/src/vector_math/vector2.dart
+++ b/lib/src/vector_math/vector2.dart
@@ -61,7 +61,7 @@
   /// Generate random vector in the range (0, 0) to (1, 1). You can
   /// optionally pass your own random number generator.
   factory Vector2.random([math.Random rng]) {
-    rng = rng == null ? new math.Random() : rng;
+    rng ??= new math.Random();
     return new Vector2(rng.nextDouble(), rng.nextDouble());
   }
 
diff --git a/lib/src/vector_math/vector3.dart b/lib/src/vector_math/vector3.dart
index d2644fa..fe315d4 100644
--- a/lib/src/vector_math/vector3.dart
+++ b/lib/src/vector_math/vector3.dart
@@ -65,7 +65,7 @@
   /// Generate random vector in the range (0, 0, 0) to (1, 1, 1). You can
   /// optionally pass your own random number generator.
   factory Vector3.random([math.Random rng]) {
-    rng = rng == null ? new math.Random() : rng;
+    rng ??= new math.Random();
     return new Vector3(rng.nextDouble(), rng.nextDouble(), rng.nextDouble());
   }
 
diff --git a/lib/src/vector_math/vector4.dart b/lib/src/vector_math/vector4.dart
index e1f312a..086ad4f 100644
--- a/lib/src/vector_math/vector4.dart
+++ b/lib/src/vector_math/vector4.dart
@@ -71,7 +71,7 @@
   /// Generate random vector in the range (0, 0, 0, 0) to (1, 1, 1, 1). You can
   /// optionally pass your own random number generator.
   factory Vector4.random([math.Random rng]) {
-    rng = rng == null ? new math.Random() : rng;
+    rng ??= new math.Random();
     return new Vector4(
         rng.nextDouble(), rng.nextDouble(), rng.nextDouble(), rng.nextDouble());
   }
diff --git a/lib/src/vector_math_64/matrix4.dart b/lib/src/vector_math_64/matrix4.dart
index 5878c1a..e883051 100644
--- a/lib/src/vector_math_64/matrix4.dart
+++ b/lib/src/vector_math_64/matrix4.dart
@@ -877,8 +877,8 @@
       sz = x.z;
     } else if (x is double) {
       sx = x;
-      sy = y == null ? x : y.toDouble();
-      sz = z == null ? x : z.toDouble();
+      sy = y ?? x;
+      sz = z ?? x;
     }
     _m4storage[0] *= sx;
     _m4storage[1] *= sx;
@@ -900,8 +900,7 @@
 
   /// Create a copy of [this] scaled by a [Vector3], [Vector4] or [x],[y], and
   /// [z].
-  Matrix4 scaled(dynamic x, [double y = null, double z = null]) =>
-      clone()..scale(x, y, z);
+  Matrix4 scaled(dynamic x, [double y, double z]) => clone()..scale(x, y, z);
 
   /// Zeros [this].
   void setZero() {
diff --git a/lib/src/vector_math_64/vector2.dart b/lib/src/vector_math_64/vector2.dart
index ef90099..cc951f5 100644
--- a/lib/src/vector_math_64/vector2.dart
+++ b/lib/src/vector_math_64/vector2.dart
@@ -61,7 +61,7 @@
   /// Generate random vector in the range (0, 0) to (1, 1). You can
   /// optionally pass your own random number generator.
   factory Vector2.random([math.Random rng]) {
-    rng = rng == null ? new math.Random() : rng;
+    rng ??= new math.Random();
     return new Vector2(rng.nextDouble(), rng.nextDouble());
   }
 
diff --git a/lib/src/vector_math_64/vector3.dart b/lib/src/vector_math_64/vector3.dart
index a356ed4..7d61041 100644
--- a/lib/src/vector_math_64/vector3.dart
+++ b/lib/src/vector_math_64/vector3.dart
@@ -65,7 +65,7 @@
   /// Generate random vector in the range (0, 0, 0) to (1, 1, 1). You can
   /// optionally pass your own random number generator.
   factory Vector3.random([math.Random rng]) {
-    rng = rng == null ? new math.Random() : rng;
+    rng ??= new math.Random();
     return new Vector3(rng.nextDouble(), rng.nextDouble(), rng.nextDouble());
   }
 
diff --git a/lib/src/vector_math_64/vector4.dart b/lib/src/vector_math_64/vector4.dart
index 5e27501..d65c8ac 100644
--- a/lib/src/vector_math_64/vector4.dart
+++ b/lib/src/vector_math_64/vector4.dart
@@ -71,7 +71,7 @@
   /// Generate random vector in the range (0, 0, 0, 0) to (1, 1, 1, 1). You can
   /// optionally pass your own random number generator.
   factory Vector4.random([math.Random rng]) {
-    rng = rng == null ? new math.Random() : rng;
+    rng ??= new math.Random();
     return new Vector4(
         rng.nextDouble(), rng.nextDouble(), rng.nextDouble(), rng.nextDouble());
   }