Enable and fix 'prefer_final_locals'
diff --git a/analysis_options.yaml b/analysis_options.yaml
index 3c91353..e87136a 100644
--- a/analysis_options.yaml
+++ b/analysis_options.yaml
@@ -43,7 +43,7 @@
   - package_names
   - package_prefixed_library_names
   - prefer_const_constructors
-  #- prefer_final_locals
+  - prefer_final_locals
   - prefer_initializing_formals
   - prefer_interpolation_to_compose_strings
   - prefer_null_aware_operators
diff --git a/benchmark/matrix4_tween_bench.dart b/benchmark/matrix4_tween_bench.dart
index 7885013..b95e417 100644
--- a/benchmark/matrix4_tween_bench.dart
+++ b/benchmark/matrix4_tween_bench.dart
@@ -24,9 +24,9 @@
   void run() {
     var sum_traces = 0.0;
     for (var i = 0; i <= 1024; i++) {
-      var t = i / 1024.0;
-      var m1 = lerp(beginTransform, endTransform, t);
-      var m2 = lerp(endTransform, beginTransform, t);
+      final t = i / 1024.0;
+      final m1 = lerp(beginTransform, endTransform, t);
+      final m2 = lerp(endTransform, beginTransform, t);
       sum_traces += m1.trace();
       sum_traces += m2.trace();
     }
@@ -122,7 +122,7 @@
 }
 
 void main() {
-  var benchmarks = [
+  final benchmarks = [
     Matrix4TweenBenchmark1(),
     Matrix4TweenBenchmark2(),
     Matrix4TweenBenchmark3(),
diff --git a/test/geometry_test.dart b/test/geometry_test.dart
index 3074307..40e600b 100644
--- a/test/geometry_test.dart
+++ b/test/geometry_test.dart
@@ -24,7 +24,7 @@
 
   final Uint16List indices = Uint16List.fromList([0, 1, 2, 3, 2, 1]);
 
-  var normals = Vector3List(positions.length);
+  final normals = Vector3List(positions.length);
 
   generateNormals(normals, positions, indices);
 
@@ -58,7 +58,7 @@
 
   final Uint16List indices = Uint16List.fromList([0, 1, 2, 3, 2, 1]);
 
-  var tangents = Vector4List(positions.length);
+  final tangents = Vector4List(positions.length);
 
   generateTangents(tangents, positions, normals, texCoords, indices);
 
@@ -69,20 +69,20 @@
 }
 
 MeshGeometry filterUnitCube(GeometryFilter filter) {
-  var generator = CubeGenerator();
+  final generator = CubeGenerator();
   return generator.createCube(1.0, 1.0, 1.0, filters: [filter]);
 }
 
 void testTransformFilter() {
-  var scaleMat = Matrix4.identity();
+  final scaleMat = Matrix4.identity();
   scaleMat.scale(2.0, 2.0, 2.0);
-  var filter = TransformFilter(scaleMat);
-  var cube = filterUnitCube(filter);
+  final filter = TransformFilter(scaleMat);
+  final cube = filterUnitCube(filter);
 
   // Check to ensure all the vertices were properly scaled
-  var positions = cube.getViewForAttrib('POSITION') as Vector3List;
+  final positions = cube.getViewForAttrib('POSITION') as Vector3List;
   for (var i = 0; i < positions.length; ++i) {
-    var position = positions[i];
+    final position = positions[i];
     expect(position.storage[0].abs(), equals(2.0));
     expect(position.storage[1].abs(), equals(2.0));
     expect(position.storage[2].abs(), equals(2.0));
@@ -90,8 +90,8 @@
 }
 
 void testFlatShadeFilter() {
-  var filter = FlatShadeFilter();
-  var cube = filterUnitCube(filter);
+  final filter = FlatShadeFilter();
+  final cube = filterUnitCube(filter);
 
   // Flat shading removes indices and duplicates vertices
   expect(cube.indices, equals(null));
@@ -99,8 +99,8 @@
 }
 
 void testBarycentricFilter() {
-  var filter = BarycentricFilter();
-  var cube = filterUnitCube(filter);
+  final filter = BarycentricFilter();
+  final cube = filterUnitCube(filter);
 
   // Generating barycentric coords removes indices and duplicates vertices
   expect(cube.indices, equals(null));
@@ -110,28 +110,28 @@
 }
 
 void testColorFilter() {
-  var filterColor = Vector4(1.0, 0.0, 0.0, 1.0);
-  var filter = ColorFilter(filterColor);
-  var cube = filterUnitCube(filter);
+  final filterColor = Vector4(1.0, 0.0, 0.0, 1.0);
+  final filter = ColorFilter(filterColor);
+  final cube = filterUnitCube(filter);
 
   // Ensure that the same color was applied to all vertices
-  var colors = cube.getViewForAttrib('COLOR') as Vector4List;
+  final colors = cube.getViewForAttrib('COLOR') as Vector4List;
   for (var i = 0; i < colors.length; ++i) {
-    var color = colors[i];
+    final color = colors[i];
     relativeTest(color, filterColor);
   }
 }
 
 void testCombineIndices() {
   // Combining two meshes should generate indices that are not out of range.
-  var sphereGenerator = SphereGenerator();
+  final sphereGenerator = SphereGenerator();
 
-  var sphere0 =
+  final sphere0 =
       sphereGenerator.createSphere(10.0, latSegments: 8, lonSegments: 8);
-  var sphere1 =
+  final sphere1 =
       sphereGenerator.createSphere(10.0, latSegments: 8, lonSegments: 8);
 
-  var combined = MeshGeometry.combine([sphere0, sphere1]);
+  final combined = MeshGeometry.combine([sphere0, sphere1]);
   expect(combined.indices, everyElement(lessThan(combined.length)));
 }
 
diff --git a/test/matrix2_test.dart b/test/matrix2_test.dart
index fa1dd82..6fae198 100644
--- a/test/matrix2_test.dart
+++ b/test/matrix2_test.dart
@@ -13,8 +13,8 @@
 import 'test_utils.dart';
 
 void testMatrix2Adjoint() {
-  var input = <Matrix2>[];
-  var expectedOutput = <Matrix2>[];
+  final input = <Matrix2>[];
+  final expectedOutput = <Matrix2>[];
 
   input.add(parseMatrix<Matrix2>('''0.830828627896291   0.549723608291140
                                     0.585264091152724   0.917193663829810'''));
@@ -29,15 +29,15 @@
   assert(input.length == expectedOutput.length);
 
   for (var i = 0; i < input.length; i++) {
-    var output = input[i].clone();
+    final output = input[i].clone();
     output.scaleAdjoint(1.0);
     relativeTest(output, expectedOutput[i]);
   }
 }
 
 void testMatrix2Determinant() {
-  var input = <Matrix2>[];
-  var expectedOutput = <double>[];
+  final input = <Matrix2>[];
+  final expectedOutput = <double>[];
 
   input.add(parseMatrix<Matrix2>('''0.830828627896291   0.549723608291140
                                     0.585264091152724   0.917193663829810'''));
@@ -46,14 +46,14 @@
   assert(input.length == expectedOutput.length);
 
   for (var i = 0; i < input.length; i++) {
-    var output = input[i].determinant();
+    final output = input[i].determinant();
     //print('${input[i].cols}x${input[i].rows} = $output');
     relativeTest(output, expectedOutput[i]);
   }
 }
 
 void testMatrix2Transform() {
-  var rot = Matrix2.rotation(math.pi / 4);
+  final rot = Matrix2.rotation(math.pi / 4);
   final input = Vector2(0.234245234259, 0.890723489233);
 
   final expected = Vector2(
@@ -69,9 +69,9 @@
 }
 
 void testMatrix2Inversion() {
-  var m = Matrix2(4.0, 3.0, 3.0, 2.0);
-  var result = Matrix2.zero();
-  var det = result.copyInverse(m);
+  final m = Matrix2(4.0, 3.0, 3.0, 2.0);
+  final result = Matrix2.zero();
+  final det = result.copyInverse(m);
   expect(det, -1.0);
   expect(result.entry(0, 0), -2.0);
   expect(result.entry(1, 0), 3.0);
diff --git a/test/matrix3_test.dart b/test/matrix3_test.dart
index fea1469..4efe798 100644
--- a/test/matrix3_test.dart
+++ b/test/matrix3_test.dart
@@ -13,8 +13,8 @@
 import 'test_utils.dart';
 
 void testMatrix3Adjoint() {
-  var input = <dynamic>[];
-  var expectedOutput = <dynamic>[];
+  final input = <dynamic>[];
+  final expectedOutput = <dynamic>[];
 
   input.add(parseMatrix<Matrix3>(
       ''' 0.285839018820374   0.380445846975357   0.053950118666607
@@ -42,15 +42,15 @@
   assert(input.length == expectedOutput.length);
 
   for (var i = 0; i < input.length; i++) {
-    dynamic output = input[i].clone();
+    final dynamic output = input[i].clone();
     output.scaleAdjoint(1.0);
     relativeTest(output, expectedOutput[i]);
   }
 }
 
 void testMatrix3Determinant() {
-  var input = <Matrix3>[];
-  var expectedOutput = <double>[];
+  final input = <Matrix3>[];
+  final expectedOutput = <double>[];
 
   input.add(parseMatrix<Matrix3>(
       '''0.285839018820374   0.380445846975357   0.053950118666607
@@ -61,16 +61,16 @@
   assert(input.length == expectedOutput.length);
 
   for (var i = 0; i < input.length; i++) {
-    var output = input[i].determinant();
+    final output = input[i].determinant();
     //print('${input[i].cols}x${input[i].rows} = $output');
     relativeTest(output, expectedOutput[i]);
   }
 }
 
 void testMatrix3SelfTransposeMultiply() {
-  var inputA = <Matrix3>[];
-  var inputB = <Matrix3>[];
-  var expectedOutput = <Matrix3>[];
+  final inputA = <Matrix3>[];
+  final inputB = <Matrix3>[];
+  final expectedOutput = <Matrix3>[];
 
   inputA.add(parseMatrix<Matrix3>(
       '''0.084435845510910   0.800068480224308   0.181847028302852
@@ -101,16 +101,16 @@
   assert(inputB.length == expectedOutput.length);
 
   for (var i = 0; i < inputA.length; i++) {
-    var output = inputA[i].clone();
+    final output = inputA[i].clone();
     output.transposeMultiply(inputB[i]);
     relativeTest(output, expectedOutput[i]);
   }
 }
 
 void testMatrix3SelfMultiply() {
-  var inputA = <Matrix3>[];
-  var inputB = <Matrix3>[];
-  var expectedOutput = <Matrix3>[];
+  final inputA = <Matrix3>[];
+  final inputB = <Matrix3>[];
+  final expectedOutput = <Matrix3>[];
 
   inputA.add(parseMatrix<Matrix3>(
       '''0.084435845510910   0.800068480224308   0.181847028302852
@@ -141,16 +141,16 @@
   assert(inputB.length == expectedOutput.length);
 
   for (var i = 0; i < inputA.length; i++) {
-    var output = inputA[i].clone();
+    final output = inputA[i].clone();
     output.multiply(inputB[i]);
     relativeTest(output, expectedOutput[i]);
   }
 }
 
 void testMatrix3SelfMultiplyTranspose() {
-  var inputA = <Matrix3>[];
-  var inputB = <Matrix3>[];
-  var expectedOutput = <Matrix3>[];
+  final inputA = <Matrix3>[];
+  final inputB = <Matrix3>[];
+  final expectedOutput = <Matrix3>[];
 
   inputA.add(parseMatrix<Matrix3>(
       '''0.084435845510910   0.800068480224308   0.181847028302852
@@ -181,16 +181,16 @@
   assert(inputB.length == expectedOutput.length);
 
   for (var i = 0; i < inputA.length; i++) {
-    var output = inputA[i].clone();
+    final output = inputA[i].clone();
     output.multiplyTranspose(inputB[i]);
     relativeTest(output, expectedOutput[i]);
   }
 }
 
 void testMatrix3Transform() {
-  var rotX = Matrix3.rotationX(math.pi / 4);
-  var rotY = Matrix3.rotationY(math.pi / 4);
-  var rotZ = Matrix3.rotationZ(math.pi / 4);
+  final rotX = Matrix3.rotationX(math.pi / 4);
+  final rotY = Matrix3.rotationY(math.pi / 4);
+  final rotZ = Matrix3.rotationZ(math.pi / 4);
   final input = Vector3(1.0, 0.0, 0.0);
 
   relativeTest(rotX.transformed(input), input);
@@ -201,9 +201,10 @@
 }
 
 void testMatrix3Transform2() {
-  var rotZ = Matrix3.rotationZ(math.pi / 4);
-  var trans = Matrix3(1.0, 0.0, 3.0, 0.0, 1.0, 2.0, 3.0, 2.0, 1.0);
-  var transB = Matrix3.fromList([1.0, 0.0, 3.0, 0.0, 1.0, 2.0, 3.0, 2.0, 1.0]);
+  final rotZ = Matrix3.rotationZ(math.pi / 4);
+  final trans = Matrix3(1.0, 0.0, 3.0, 0.0, 1.0, 2.0, 3.0, 2.0, 1.0);
+  final transB =
+      Matrix3.fromList([1.0, 0.0, 3.0, 0.0, 1.0, 2.0, 3.0, 2.0, 1.0]);
   expect(trans, equals(transB));
 
   final input = Vector2(1.0, 0.0);
@@ -215,8 +216,8 @@
 }
 
 void testMatrix3AbsoluteRotate2() {
-  var rotZ = Matrix3.rotationZ(-math.pi / 4);
-  var rotZcw = Matrix3.rotationZ(math.pi / 4);
+  final rotZ = Matrix3.rotationZ(-math.pi / 4);
+  final rotZcw = Matrix3.rotationZ(math.pi / 4);
   // Add translation
   rotZ.setEntry(2, 0, 3.0);
   rotZ.setEntry(2, 1, 2.0);
@@ -231,10 +232,10 @@
 }
 
 void testMatrix3ConstructorCopy() {
-  var a = Vector3(1.0, 2.0, 3.0);
-  var b = Vector3(4.0, 5.0, 6.0);
-  var c = Vector3(7.0, 8.0, 9.0);
-  var m = Matrix3.columns(a, b, c);
+  final a = Vector3(1.0, 2.0, 3.0);
+  final b = Vector3(4.0, 5.0, 6.0);
+  final c = Vector3(7.0, 8.0, 9.0);
+  final m = Matrix3.columns(a, b, c);
   expect(m.entry(0, 0), 1.0);
   expect(m.entry(2, 2), 9.0);
   c.z = 5.0;
@@ -244,9 +245,9 @@
 }
 
 void testMatrix3Inversion() {
-  var m = Matrix3(1.0, 0.0, 5.0, 2.0, 1.0, 6.0, 3.0, 4.0, 0.0);
-  var result = Matrix3.zero();
-  var det = result.copyInverse(m);
+  final m = Matrix3(1.0, 0.0, 5.0, 2.0, 1.0, 6.0, 3.0, 4.0, 0.0);
+  final result = Matrix3.zero();
+  final det = result.copyInverse(m);
   expect(det, 1.0);
   expect(result.entry(0, 0), -24.0);
   expect(result.entry(1, 0), 20.0);
diff --git a/test/matrix4_test.dart b/test/matrix4_test.dart
index 8d99438..2a8be3d 100644
--- a/test/matrix4_test.dart
+++ b/test/matrix4_test.dart
@@ -118,8 +118,8 @@
 }
 
 void testMatrix4Transpose() {
-  var inputA = <Matrix4>[];
-  var expectedOutput = <Matrix4>[];
+  final inputA = <Matrix4>[];
+  final expectedOutput = <Matrix4>[];
   inputA.add(parseMatrix<Matrix4>(
       '''0.337719409821377   0.780252068321138   0.096454525168389   0.575208595078466
          0.900053846417662   0.389738836961253   0.131973292606335   0.059779542947156
@@ -134,9 +134,9 @@
 }
 
 void testMatrix4VectorMultiplication() {
-  var inputA = <Matrix4>[];
-  var inputB = <Vector4>[];
-  var expectedOutput = <Vector4>[];
+  final inputA = <Matrix4>[];
+  final inputB = <Vector4>[];
+  final expectedOutput = <Vector4>[];
 
   inputA.add(parseMatrix<Matrix4>(
       '''0.337719409821377   0.780252068321138   0.096454525168389   0.575208595078466
@@ -156,15 +156,15 @@
   assert(expectedOutput.length == inputB.length);
 
   for (var i = 0; i < inputA.length; i++) {
-    var output = inputA[i] * inputB[i] as Vector4;
+    final output = inputA[i] * inputB[i] as Vector4;
     relativeTest(output, expectedOutput[i]);
   }
 }
 
 void testMatrix4Multiplication() {
-  var inputA = <Matrix4>[];
-  var inputB = <Matrix4>[];
-  var expectedOutput = <Matrix4>[];
+  final inputA = <Matrix4>[];
+  final inputB = <Matrix4>[];
+  final expectedOutput = <Matrix4>[];
 
   inputA.add(parseMatrix<Matrix4>(
       '''0.587044704531417   0.230488160211558   0.170708047147859   0.923379642103244
@@ -186,15 +186,15 @@
   assert(expectedOutput.length == inputB.length);
 
   for (var i = 0; i < inputA.length; i++) {
-    var output = inputA[i] * inputB[i] as Matrix4;
+    final output = inputA[i] * inputB[i] as Matrix4;
     //print('${inputA[i].cols}x${inputA[i].rows} * ${inputB[i].cols}x${inputB[i].rows} = ${output.cols}x${output.rows}');
     relativeTest(output, expectedOutput[i]);
   }
 }
 
 void testMatrix4Adjoint() {
-  var input = <Matrix4>[];
-  var expectedOutput = <Matrix4>[];
+  final input = <Matrix4>[];
+  final expectedOutput = <Matrix4>[];
 
   input.add(parseMatrix<Matrix4>(
       '''0.934010684229183   0.011902069501241   0.311215042044805   0.262971284540144
@@ -229,15 +229,15 @@
   assert(input.length == expectedOutput.length);
 
   for (var i = 0; i < input.length; i++) {
-    var output = input[i].clone();
+    final output = input[i].clone();
     output.scaleAdjoint(1.0);
     relativeTest(output, expectedOutput[i]);
   }
 }
 
 void testMatrix4Determinant() {
-  var input = <Matrix4>[];
-  var expectedOutput = <double>[];
+  final input = <Matrix4>[];
+  final expectedOutput = <double>[];
   input.add(parseMatrix<Matrix4>(
       '''0.046171390631154   0.317099480060861   0.381558457093008   0.489764395788231
          0.097131781235848   0.950222048838355   0.765516788149002   0.445586200710899
@@ -261,16 +261,16 @@
   assert(input.length == expectedOutput.length);
 
   for (var i = 0; i < input.length; i++) {
-    var output = input[i].determinant();
+    final output = input[i].determinant();
     //print('${input[i].cols}x${input[i].rows} = $output');
     relativeTest(output, expectedOutput[i]);
   }
 }
 
 void testMatrix4SelfTransposeMultiply() {
-  var inputA = <Matrix4>[];
-  var inputB = <Matrix4>[];
-  var expectedOutput = <Matrix4>[];
+  final inputA = <Matrix4>[];
+  final inputB = <Matrix4>[];
+  final expectedOutput = <Matrix4>[];
 
   inputA.add(parseMatrix<Matrix4>(
       '''0.450541598502498   0.152378018969223   0.078175528753184   0.004634224134067
@@ -292,16 +292,16 @@
   assert(inputB.length == expectedOutput.length);
 
   for (var i = 0; i < inputA.length; i++) {
-    var output = inputA[i].clone();
+    final output = inputA[i].clone();
     output.transposeMultiply(inputB[i]);
     relativeTest(output, expectedOutput[i]);
   }
 }
 
 void testMatrix4SelfMultiply() {
-  var inputA = <Matrix4>[];
-  var inputB = <Matrix4>[];
-  var expectedOutput = <Matrix4>[];
+  final inputA = <Matrix4>[];
+  final inputB = <Matrix4>[];
+  final expectedOutput = <Matrix4>[];
 
   inputA.add(parseMatrix<Matrix4>(
       '''0.450541598502498   0.152378018969223   0.078175528753184   0.004634224134067
@@ -323,16 +323,16 @@
   assert(inputB.length == expectedOutput.length);
 
   for (var i = 0; i < inputA.length; i++) {
-    var output = inputA[i].clone();
+    final output = inputA[i].clone();
     output.multiply(inputB[i]);
     relativeTest(output, expectedOutput[i]);
   }
 }
 
 void testMatrix4SelfMultiplyTranspose() {
-  var inputA = <Matrix4>[];
-  var inputB = <Matrix4>[];
-  var expectedOutput = <Matrix4>[];
+  final inputA = <Matrix4>[];
+  final inputB = <Matrix4>[];
+  final expectedOutput = <Matrix4>[];
 
   inputA.add(parseMatrix<Matrix4>(
       '''0.450541598502498   0.152378018969223   0.078175528753184   0.004634224134067
@@ -354,17 +354,17 @@
   assert(inputB.length == expectedOutput.length);
 
   for (var i = 0; i < inputA.length; i++) {
-    var output = inputA[i].clone();
+    final output = inputA[i].clone();
     output.multiplyTranspose(inputB[i]);
     relativeTest(output, expectedOutput[i]);
   }
 }
 
 void testMatrix4Translation() {
-  var inputA = <Matrix4>[];
-  var inputB = <Matrix4>[];
-  var output1 = <Matrix4>[];
-  var output2 = <Matrix4>[];
+  final inputA = <Matrix4>[];
+  final inputB = <Matrix4>[];
+  final output1 = <Matrix4>[];
+  final output2 = <Matrix4>[];
 
   inputA.add(Matrix4.identity());
   inputB.add(Matrix4.translationValues(1.0, 3.0, 5.7));
@@ -380,10 +380,10 @@
 }
 
 void testMatrix4Scale() {
-  var inputA = <Matrix4>[];
-  var inputB = <Matrix4>[];
-  var output1 = <Matrix4>[];
-  var output2 = <Matrix4>[];
+  final inputA = <Matrix4>[];
+  final inputB = <Matrix4>[];
+  final output1 = <Matrix4>[];
+  final output2 = <Matrix4>[];
 
   inputA.add(Matrix4.identity());
   inputB.add(Matrix4.diagonal3Values(1.0, 3.0, 5.7));
@@ -399,8 +399,8 @@
 }
 
 void testMatrix4Rotate() {
-  var output1 = <Matrix4>[];
-  var output2 = <Matrix4>[];
+  final output1 = <Matrix4>[];
+  final output2 = <Matrix4>[];
   output1.add(Matrix4.rotationX(1.57079632679));
   output2.add(Matrix4.identity()..rotateX(1.57079632679));
   output1.add(Matrix4.rotationY(1.57079632679 * 0.5));
@@ -408,13 +408,13 @@
   output1.add(Matrix4.rotationZ(1.57079632679 * 0.25));
   output2.add(Matrix4.identity()..rotateZ(1.57079632679 * 0.25));
   {
-    var axis = Vector3(1.1, 1.1, 1.1);
+    final axis = Vector3(1.1, 1.1, 1.1);
     axis.normalize();
-    var angle = 1.5;
+    final angle = 1.5;
 
-    var q = Quaternion.axisAngle(axis, angle);
-    var R = q.asRotationMatrix();
-    var T = Matrix4.identity();
+    final q = Quaternion.axisAngle(axis, angle);
+    final R = q.asRotationMatrix();
+    final T = Matrix4.identity();
     T.setRotation(R);
     output1.add(T);
 
@@ -440,9 +440,9 @@
 }
 
 void testMatrix4Column() {
-  var I = Matrix4.zero();
+  final I = Matrix4.zero();
   expect(I[0], 0.0);
-  var c0 = Vector4(1.0, 2.0, 3.0, 4.0);
+  final c0 = Vector4(1.0, 2.0, 3.0, 4.0);
   I.setColumn(0, c0);
   expect(I[0], 1.0);
   c0.x = 4.0;
@@ -451,10 +451,10 @@
 }
 
 void testMatrix4Inversion() {
-  var m = Matrix4(1.0, 0.0, 2.0, 2.0, 0.0, 2.0, 1.0, 0.0, 0.0, 1.0, 0.0, 1.0,
+  final m = Matrix4(1.0, 0.0, 2.0, 2.0, 0.0, 2.0, 1.0, 0.0, 0.0, 1.0, 0.0, 1.0,
       1.0, 2.0, 1.0, 4.0);
-  var result = Matrix4.zero();
-  var det = result.copyInverse(m);
+  final result = Matrix4.zero();
+  final det = result.copyInverse(m);
   expect(det, 2.0);
   expect(result.entry(0, 0), -2.0);
   expect(result.entry(1, 0), 1.0);
@@ -535,7 +535,7 @@
 }
 
 void testMatrix4Compose() {
-  var tValues = [
+  final tValues = [
     Vector3.zero(),
     Vector3(3.0, 0.0, 0.0),
     Vector3(0.0, 4.0, 0.0),
@@ -547,7 +547,7 @@
     Vector3(-2.0, -5.0, -9.0)
   ];
 
-  var sValues = [
+  final sValues = [
     Vector3(1.0, 1.0, 1.0),
     Vector3(2.0, 2.0, 2.0),
     Vector3(1.0, -1.0, 1.0),
@@ -559,7 +559,7 @@
     Vector3(-2.0, -2.0, -2.0)
   ];
 
-  var rValues = [
+  final rValues = [
     Quaternion.identity(),
     Quaternion(0.42073549240394825, 0.42073549240394825, 0.22984884706593015,
         0.7701511529340699),
@@ -577,9 +577,9 @@
 
         final m = Matrix4.compose(t, r, s);
 
-        var t2 = Vector3.zero();
-        var r2 = Quaternion.identity();
-        var s2 = Vector3.zero();
+        final t2 = Vector3.zero();
+        final r2 = Quaternion.identity();
+        final s2 = Vector3.zero();
 
         m.decompose(t2, r2, s2);
 
@@ -617,8 +617,8 @@
 }
 
 void testMatrix4SkewConstructor() {
-  var m = Matrix4.skew(0.0, 1.57);
-  var m2 = Matrix4.skewY(1.57);
+  final m = Matrix4.skew(0.0, 1.57);
+  final m2 = Matrix4.skewY(1.57);
 
   expect(m.entry(0, 0), equals(1.0));
   expect(m.entry(1, 1), equals(1.0));
@@ -629,8 +629,8 @@
 
   expect(m2, equals(m));
 
-  var n = Matrix4.skew(1.57, 0.0);
-  var n2 = Matrix4.skewX(1.57);
+  final n = Matrix4.skew(1.57, 0.0);
+  final n2 = Matrix4.skewX(1.57);
 
   expect(n.entry(0, 0), equals(1.0));
   expect(n.entry(1, 1), equals(1.0));
@@ -644,7 +644,7 @@
 
 void testLeftTranslate() {
   // Our test point.
-  var p = Vector3(0.5, 0.0, 0.0);
+  final p = Vector3(0.5, 0.0, 0.0);
 
   // Scale 2x matrix.
   var m = Matrix4.diagonal3Values(2.0, 2.0, 2.0);
diff --git a/test/noise_test.dart b/test/noise_test.dart
index dff3375..c6dc0c7 100644
--- a/test/noise_test.dart
+++ b/test/noise_test.dart
@@ -11,8 +11,8 @@
 void testSimplexNoise() {
   final SimplexNoise noise = SimplexNoise();
 
-  var values2D = List<double>(10);
-  var values3D = List<double>(10);
+  final values2D = List<double>(10);
+  final values3D = List<double>(10);
 
   // Cache several values at known coordinates
   for (var i = 0; i < values2D.length; ++i) {
diff --git a/test/opengl_matrix_test.dart b/test/opengl_matrix_test.dart
index 02dcf8b..9225ba1 100644
--- a/test/opengl_matrix_test.dart
+++ b/test/opengl_matrix_test.dart
@@ -12,28 +12,28 @@
 import 'test_utils.dart';
 
 void testUnproject() {
-  var position = Vector3(0.0, 0.0, 0.0);
-  var focusPosition = Vector3(0.0, 0.0, -1.0);
-  var upDirection = Vector3(0.0, 1.0, 0.0);
-  var lookat = makeViewMatrix(position, focusPosition, upDirection);
-  var n = 0.1;
-  var f = 1000.0;
-  var l = -10.0;
-  var r = 10.0;
-  var b = -10.0;
-  var t = 10.0;
-  var frustum = makeFrustumMatrix(l, r, b, t, n, f);
-  var C = frustum * lookat as Matrix4;
-  var re = Vector3.zero();
+  final position = Vector3(0.0, 0.0, 0.0);
+  final focusPosition = Vector3(0.0, 0.0, -1.0);
+  final upDirection = Vector3(0.0, 1.0, 0.0);
+  final lookat = makeViewMatrix(position, focusPosition, upDirection);
+  final n = 0.1;
+  final f = 1000.0;
+  final l = -10.0;
+  final r = 10.0;
+  final b = -10.0;
+  final t = 10.0;
+  final frustum = makeFrustumMatrix(l, r, b, t, n, f);
+  final C = frustum * lookat as Matrix4;
+  final re = Vector3.zero();
   unproject(C, 0.0, 100.0, 0.0, 100.0, 50.0, 50.0, 1.0, re);
 }
 
 void testLookAt() {
-  var eyePosition = Vector3(0.0, 0.0, 0.0);
-  var lookAtPosition = Vector3(0.0, 0.0, -1.0);
-  var upDirection = Vector3(0.0, 1.0, 0.0);
+  final eyePosition = Vector3(0.0, 0.0, 0.0);
+  final lookAtPosition = Vector3(0.0, 0.0, -1.0);
+  final upDirection = Vector3(0.0, 1.0, 0.0);
 
-  var lookat = makeViewMatrix(eyePosition, lookAtPosition, upDirection);
+  final lookat = makeViewMatrix(eyePosition, lookAtPosition, upDirection);
   assert(lookat.getColumn(0).w == 0.0);
   assert(lookat.getColumn(1).w == 0.0);
   assert(lookat.getColumn(2).w == 0.0);
@@ -45,13 +45,13 @@
 }
 
 void testFrustumMatrix() {
-  var n = 0.1;
-  var f = 1000.0;
-  var l = -1.0;
-  var r = 1.0;
-  var b = -1.0;
-  var t = 1.0;
-  var frustum = makeFrustumMatrix(l, r, b, t, n, f);
+  final n = 0.1;
+  final f = 1000.0;
+  final l = -1.0;
+  final r = 1.0;
+  final b = -1.0;
+  final t = 1.0;
+  final frustum = makeFrustumMatrix(l, r, b, t, n, f);
   relativeTest(frustum.getColumn(0), Vector4(2 * n / (r - l), 0.0, 0.0, 0.0));
   relativeTest(frustum.getColumn(1), Vector4(0.0, 2 * n / (t - b), 0.0, 0.0));
   relativeTest(frustum.getColumn(2),
@@ -66,7 +66,7 @@
   final double zNear = 1.0;
   final double zFar = 100.0;
 
-  var perspective = makePerspectiveMatrix(fov, aspectRatio, zNear, zFar);
+  final perspective = makePerspectiveMatrix(fov, aspectRatio, zNear, zFar);
   relativeTest(perspective.getColumn(0), Vector4(0.5, 0.0, 0.0, 0.0));
   relativeTest(perspective.getColumn(1), Vector4(0.0, 1.0, 0.0, 0.0));
   relativeTest(
@@ -79,7 +79,7 @@
   final double aspectRatio = 2.0;
   final double zNear = 1.0;
 
-  var infinite = makeInfiniteMatrix(fov, aspectRatio, zNear);
+  final infinite = makeInfiniteMatrix(fov, aspectRatio, zNear);
   relativeTest(infinite.getColumn(0), Vector4(0.5, 0.0, 0.0, 0.0));
   relativeTest(infinite.getColumn(1), Vector4(0.0, 1.0, 0.0, 0.0));
   relativeTest(infinite.getColumn(2), Vector4(0.0, 0.0, -1.0, -1.0));
@@ -87,13 +87,13 @@
 }
 
 void testOrthographicMatrix() {
-  var n = 0.1;
-  var f = 1000.0;
-  var l = -1.0;
-  var r = 1.0;
-  var b = -1.0;
-  var t = 1.0;
-  var ortho = makeOrthographicMatrix(l, r, b, t, n, f);
+  final n = 0.1;
+  final f = 1000.0;
+  final l = -1.0;
+  final r = 1.0;
+  final b = -1.0;
+  final t = 1.0;
+  final ortho = makeOrthographicMatrix(l, r, b, t, n, f);
   relativeTest(ortho.getColumn(0), Vector4(2 / (r - l), 0.0, 0.0, 0.0));
   relativeTest(ortho.getColumn(1), Vector4(0.0, 2 / (t - b), 0.0, 0.0));
   relativeTest(ortho.getColumn(2), Vector4(0.0, 0.0, -2 / (f - n), 0.0));
@@ -102,25 +102,25 @@
 }
 
 void testModelMatrix() {
-  var view = Matrix4.zero();
-  var position = Vector3(1.0, 1.0, 1.0);
-  var focus = Vector3(0.0, 0.0, -1.0);
-  var up = Vector3(0.0, 1.0, 0.0);
+  final view = Matrix4.zero();
+  final position = Vector3(1.0, 1.0, 1.0);
+  final focus = Vector3(0.0, 0.0, -1.0);
+  final up = Vector3(0.0, 1.0, 0.0);
 
   setViewMatrix(view, position, focus, up);
 
-  var model = Matrix4.zero();
+  final model = Matrix4.zero();
 
-  var forward = focus.clone();
+  final forward = focus.clone();
   forward.sub(position);
   forward.normalize();
 
-  var right = forward.cross(up).normalized();
-  var u = right.cross(forward).normalized();
+  final right = forward.cross(up).normalized();
+  final u = right.cross(forward).normalized();
 
   setModelMatrix(model, forward, u, position.x, position.y, position.z);
 
-  var result1 = view.clone();
+  final result1 = view.clone();
   result1.multiply(model);
 
   relativeTest(result1, Matrix4.identity());
diff --git a/test/quaternion_test.dart b/test/quaternion_test.dart
index 9c2568a..b75133d 100644
--- a/test/quaternion_test.dart
+++ b/test/quaternion_test.dart
@@ -44,15 +44,15 @@
 void testConjugate(List<Quaternion> input, List<Quaternion> expectedOutput) {
   assert(input.length == expectedOutput.length);
   for (var i = 0; i < input.length; i++) {
-    var output = input[i]..conjugate();
+    final output = input[i]..conjugate();
     relativeTest(output, expectedOutput[i]);
   }
 }
 
 void testQuaternionMatrixRoundTrip(List<Quaternion> input) {
   for (var i = 0; i < input.length; i++) {
-    var R = input[i].asRotationMatrix();
-    var output = Quaternion.fromRotation(R);
+    final R = input[i].asRotationMatrix();
+    final output = Quaternion.fromRotation(R);
     relativeTest(output, input[i]);
   }
 }
@@ -60,7 +60,7 @@
 void testQuaternionMultiply(List<Quaternion> inputA, List<Quaternion> inputB,
     List<Quaternion> expectedOutput) {
   for (var i = 0; i < inputA.length; i++) {
-    var output = inputA[i] * inputB[i];
+    final output = inputA[i] * inputB[i];
     relativeTest(output, expectedOutput[i]);
   }
 }
@@ -70,17 +70,17 @@
   assert((inputA.length == inputB.length) &&
       (inputB.length == expectedOutput.length));
   for (var i = 0; i < inputA.length; i++) {
-    var output = inputA[i].rotate(inputB[i]);
+    final output = inputA[i].rotate(inputB[i]);
     relativeTest(output, expectedOutput[i]);
   }
 }
 
 void testQuaternionConjugate() {
-  var input = <Quaternion>[];
+  final input = <Quaternion>[];
   input.add(Quaternion.identity());
   input.add(Quaternion(0.18260, 0.54770, 0.73030, 0.36510));
   input.add(Quaternion(0.9889, 0.0, 0.0, 0.14834));
-  var expectedOutput = <Quaternion>[];
+  final expectedOutput = <Quaternion>[];
   expectedOutput.add(Quaternion(-0.0, -0.0, -0.0, 1.0));
   expectedOutput.add(Quaternion(-0.18260, -0.54770, -0.73030, 0.36510));
   expectedOutput.add(Quaternion(-0.9889, -0.0, -0.0, 0.1483));
@@ -88,7 +88,7 @@
 }
 
 void testQuaternionMatrixQuaternionRoundTrip() {
-  var input = <Quaternion>[];
+  final input = <Quaternion>[];
   input.add(Quaternion.identity()..normalize());
   input.add(Quaternion(0.18260, 0.54770, 0.73030, 0.36510)..normalize());
   input.add(Quaternion(0.9889, 0.0, 0.0, 0.14834)..normalize());
@@ -100,22 +100,22 @@
 }
 
 void testQuaternionMultiplying() {
-  var inputA = <Quaternion>[];
+  final inputA = <Quaternion>[];
   inputA.add(Quaternion(0.18260, 0.54770, 0.73030, 0.36510));
   inputA.add(Quaternion(0.9889, 0.0, 0.0, 0.14834));
-  var inputB = <Quaternion>[];
+  final inputB = <Quaternion>[];
   inputB.add(Quaternion(0.9889, 0.0, 0.0, 0.14834));
   inputB.add(Quaternion(0.18260, 0.54770, 0.73030, 0.36510));
-  var expectedOutput = <Quaternion>[];
+  final expectedOutput = <Quaternion>[];
   expectedOutput.add(Quaternion(0.388127, 0.803418, -0.433317, -0.126429));
   expectedOutput.add(Quaternion(0.388127, -0.64097, 0.649924, -0.126429));
   testQuaternionMultiply(inputA, inputB, expectedOutput);
 }
 
 void testQuaternionNormalize() {
-  var inputA = <Quaternion>[];
-  var inputB = <Vector3>[];
-  var expectedOutput = <Vector3>[];
+  final inputA = <Quaternion>[];
+  final inputB = <Vector3>[];
+  final expectedOutput = <Vector3>[];
 
   inputA.add(Quaternion(0.0, 1.0, 0.0, 1.0)..normalize());
   inputB.add(Vector3(1.0, 1.0, 1.0));
@@ -177,14 +177,14 @@
 void testQuaternionAxisAngle() {
   // Test conversion to and from axis-angle representation
   {
-    var q = Quaternion.axisAngle(Vector3(0.0, 1.0, 0.0), 0.5 * math.pi);
+    final q = Quaternion.axisAngle(Vector3(0.0, 1.0, 0.0), 0.5 * math.pi);
     relativeTest(q.radians, 0.5 * math.pi);
     relativeTest(q.axis, Vector3(0.0, 1.0, 0.0));
   }
 
   {
     // Degenerate test: 0-angle
-    var q = Quaternion.axisAngle(Vector3(1.0, 0.0, 0.0), 0.0);
+    final q = Quaternion.axisAngle(Vector3(1.0, 0.0, 0.0), 0.0);
     relativeTest(q.radians, 0.0);
   }
 }
@@ -192,25 +192,25 @@
 void testFromTwoVectors() {
   {
     // "Normal" test case
-    var a = Vector3(1.0, 0.0, 0.0);
-    var b = Vector3(0.0, 1.0, 0.0);
-    var q = Quaternion.fromTwoVectors(a, b);
+    final a = Vector3(1.0, 0.0, 0.0);
+    final b = Vector3(0.0, 1.0, 0.0);
+    final q = Quaternion.fromTwoVectors(a, b);
     relativeTest(q.radians, 0.5 * math.pi);
     relativeTest(q.axis, Vector3(0.0, 0.0, 1.0));
   }
   {
     // Degenerate null rotation
-    var a = Vector3(1.0, 0.0, 0.0);
-    var b = Vector3(1.0, 0.0, 0.0);
-    var q = Quaternion.fromTwoVectors(a, b);
+    final a = Vector3(1.0, 0.0, 0.0);
+    final b = Vector3(1.0, 0.0, 0.0);
+    final q = Quaternion.fromTwoVectors(a, b);
     relativeTest(q.radians, 0.0);
     // Axis can be arbitrary
   }
   {
     // Parallel vectors in opposite direction
-    var a = Vector3(1.0, 0.0, 0.0);
-    var b = Vector3(-1.0, 0.0, 0.0);
-    var q = Quaternion.fromTwoVectors(a, b);
+    final a = Vector3(1.0, 0.0, 0.0);
+    final b = Vector3(-1.0, 0.0, 0.0);
+    final q = Quaternion.fromTwoVectors(a, b);
     relativeTest(q.radians, math.pi);
   }
 }
diff --git a/test/scalar_list_view_test.dart b/test/scalar_list_view_test.dart
index c5df6bf..6b1b036 100644
--- a/test/scalar_list_view_test.dart
+++ b/test/scalar_list_view_test.dart
@@ -40,7 +40,7 @@
 }
 
 void testScalarListViewFromList() {
-  var input = List<double>(3);
+  final input = List<double>(3);
   input[0] = 1.0;
   input[1] = 4.0;
   input[2] = 7.0;
diff --git a/test/test_utils.dart b/test/test_utils.dart
index 65300a1..6007f8b 100644
--- a/test/test_utils.dart
+++ b/test/test_utils.dart
@@ -16,14 +16,14 @@
 
 void relativeTest(dynamic output, dynamic expectedOutput) {
   final num errorThreshold = 0.0005;
-  num error = relativeError(output, expectedOutput).abs();
+  final num error = relativeError(output, expectedOutput).abs();
   expect(error >= errorThreshold, isFalse,
       reason: '$output != $expectedOutput : relativeError = $error');
 }
 
 void absoluteTest(dynamic output, dynamic expectedOutput) {
   final num errorThreshold = 0.0005;
-  num error = absoluteError(output, expectedOutput).abs();
+  final num error = absoluteError(output, expectedOutput).abs();
   expect(error >= errorThreshold, isFalse,
       reason: '$output != $expectedOutput : absoluteError = $error');
 }
@@ -48,12 +48,12 @@
 
 T parseMatrix<T>(String input) {
   input = input.trim();
-  var rows = input.split('\n');
-  var values = <double>[];
+  final rows = input.split('\n');
+  final values = <double>[];
   var col_count = 0;
   for (var i = 0; i < rows.length; i++) {
     rows[i] = rows[i].trim();
-    var cols = rows[i].split(' ');
+    final cols = rows[i].split(' ');
     for (var j = 0; j < cols.length; j++) {
       cols[j] = cols[j].trim();
     }
@@ -69,7 +69,7 @@
     }
   }
 
-  dynamic m = makeMatrix(rows.length, col_count);
+  final dynamic m = makeMatrix(rows.length, col_count);
   for (var j = 0; j < rows.length; j++) {
     for (var i = 0; i < col_count; i++) {
       m[m.index(j, i)] = values[j * col_count + i];
@@ -82,9 +82,10 @@
 
 T parseVector<T extends Vector>(String v) {
   v = v.trim();
-  Pattern pattern = RegExp('[\\s]+', multiLine: true, caseSensitive: false);
-  var rows = v.split(pattern);
-  var values = <double>[];
+  final Pattern pattern =
+      RegExp('[\\s]+', multiLine: true, caseSensitive: false);
+  final rows = v.split(pattern);
+  final values = <double>[];
   for (var i = 0; i < rows.length; i++) {
     rows[i] = rows[i].trim();
     if (rows[i].isEmpty) {
diff --git a/test/vector2_list_test.dart b/test/vector2_list_test.dart
index 238b5a5..78f0e99 100644
--- a/test/vector2_list_test.dart
+++ b/test/vector2_list_test.dart
@@ -14,7 +14,7 @@
 import 'test_utils.dart';
 
 void testVector2ListWithOffset() {
-  var list = Vector2List(10, 1);
+  final list = Vector2List(10, 1);
   list[0] = Vector2(1.0, 2.0);
   relativeTest(list[0].x, 1.0);
   relativeTest(list[0].y, 2.0);
@@ -25,8 +25,8 @@
 }
 
 void testVector2ListView() {
-  var buffer = Float32List(8);
-  var list = Vector2List.view(buffer, 1, 3);
+  final buffer = Float32List(8);
+  final list = Vector2List.view(buffer, 1, 3);
   // The list length should be (8 - 1) ~/ 3 == 2.
   expect(list.length, 2);
   list[0] = Vector2(1.0, 2.0);
@@ -42,8 +42,8 @@
 }
 
 void testVector2ListViewTightFit() {
-  var buffer = Float32List(8);
-  var list = Vector2List.view(buffer, 2, 4);
+  final buffer = Float32List(8);
+  final list = Vector2List.view(buffer, 2, 4);
   // The list length should be (8 - 2) ~/ 2 == 2 as the stride of the last
   // element is negligible.
   expect(list.length, 2);
@@ -60,11 +60,11 @@
 }
 
 void testVector2ListFromList() {
-  var input = List<Vector2>(3);
+  final input = List<Vector2>(3);
   input[0] = Vector2(1.0, 2.0);
   input[1] = Vector2(3.0, 4.0);
   input[2] = Vector2(5.0, 6.0);
-  var list = Vector2List.fromList(input, 2, 5);
+  final list = Vector2List.fromList(input, 2, 5);
   expect(list.buffer.length, 17);
   expect(list.buffer[0], 0.0);
   expect(list.buffer[1], 0.0);
diff --git a/test/vector2_test.dart b/test/vector2_test.dart
index 4298c81..f66265a 100644
--- a/test/vector2_test.dart
+++ b/test/vector2_test.dart
@@ -50,7 +50,7 @@
   final Vector2 a = Vector2(5.0, 7.0);
   final Vector2 b = Vector2(3.0, 8.0);
 
-  var result = Vector2.zero();
+  final result = Vector2.zero();
 
   Vector2.min(a, b, result);
   expect(result.x, equals(3.0));
@@ -65,7 +65,7 @@
   final Vector2 a = Vector2(5.0, 7.0);
   final Vector2 b = Vector2(3.0, 8.0);
 
-  var result = Vector2.zero();
+  final result = Vector2.zero();
 
   Vector2.mix(a, b, 0.5, result);
   expect(result.x, equals(4.0));
@@ -89,15 +89,15 @@
 }
 
 void testVector2Postmultiplication() {
-  var inputMatrix = Matrix2.rotation(.2);
-  var inputVector = Vector2(1.0, 0.0);
-  var inputInv = Matrix2.copy(inputMatrix);
+  final inputMatrix = Matrix2.rotation(.2);
+  final inputVector = Vector2(1.0, 0.0);
+  final inputInv = Matrix2.copy(inputMatrix);
   inputInv.invert();
   // print("input $inputMatrix");
   // print("input $inputInv");
-  var resultOld = inputMatrix.transposed() * inputVector as Vector2;
-  var resultOldvInv = inputInv * inputVector as Vector2;
-  var resultNew = inputVector..postmultiply(inputMatrix);
+  final resultOld = inputMatrix.transposed() * inputVector as Vector2;
+  final resultOldvInv = inputInv * inputVector as Vector2;
+  final resultNew = inputVector..postmultiply(inputMatrix);
   expect(resultNew.x, equals(resultOld.x));
   expect(resultNew.y, equals(resultOld.y));
   //matrix inversion can introduce a small error
@@ -107,7 +107,7 @@
 void testVector2CrossProduct() {
   final Vector2 inputA = Vector2(0.417267069084370, 0.049654430325742);
   final Vector2 inputB = Vector2(0.944787189721646, 0.490864092468080);
-  var expectedOutputCross = inputA.x * inputB.y - inputA.y * inputB.x;
+  final expectedOutputCross = inputA.x * inputB.y - inputA.y * inputB.x;
   dynamic result;
   result = cross2(inputA, inputB);
   relativeTest(result, expectedOutputCross);
@@ -136,15 +136,15 @@
 }
 
 void testVector2Constructor() {
-  var v1 = Vector2(2.0, 4.0);
+  final v1 = Vector2(2.0, 4.0);
   expect(v1.x, equals(2.0));
   expect(v1.y, equals(4.0));
 
-  var v2 = Vector2.all(2.0);
+  final v2 = Vector2.all(2.0);
   expect(v2.x, equals(2.0));
   expect(v2.y, equals(2.0));
 
-  var v3 = Vector2.random(math.Random());
+  final v3 = Vector2.random(math.Random());
   expect(v3.x, greaterThanOrEqualTo(0.0));
   expect(v3.x, lessThanOrEqualTo(1.0));
   expect(v3.y, greaterThanOrEqualTo(0.0));
@@ -186,14 +186,14 @@
 }
 
 void testVector2Negate() {
-  var vec1 = Vector2(1.0, 2.0);
+  final vec1 = Vector2(1.0, 2.0);
   vec1.negate();
   expect(vec1.x, equals(-1.0));
   expect(vec1.y, equals(-2.0));
 }
 
 void testVector2Equals() {
-  var v2 = Vector2(1.0, 2.0);
+  final v2 = Vector2(1.0, 2.0);
   expect(v2 == Vector2(1.0, 2.0), isTrue);
   expect(v2 == Vector2(1.0, 0.0), isFalse);
   expect(v2 == Vector2(0.0, 2.0), isFalse);
@@ -233,18 +233,18 @@
 }
 
 void testVector2DistanceTo() {
-  var a = Vector2(1.0, 1.0);
-  var b = Vector2(3.0, 1.0);
-  var c = Vector2(1.0, -1.0);
+  final a = Vector2(1.0, 1.0);
+  final b = Vector2(3.0, 1.0);
+  final c = Vector2(1.0, -1.0);
 
   expect(a.distanceTo(b), equals(2.0));
   expect(a.distanceTo(c), equals(2.0));
 }
 
 void testVector2DistanceToSquared() {
-  var a = Vector2(1.0, 1.0);
-  var b = Vector2(3.0, 1.0);
-  var c = Vector2(1.0, -1.0);
+  final a = Vector2(1.0, 1.0);
+  final b = Vector2(3.0, 1.0);
+  final c = Vector2(1.0, -1.0);
 
   expect(a.distanceToSquared(b), equals(4.0));
   expect(a.distanceToSquared(c), equals(4.0));
diff --git a/test/vector3_list_test.dart b/test/vector3_list_test.dart
index 5ff6c45..41cbbfc 100644
--- a/test/vector3_list_test.dart
+++ b/test/vector3_list_test.dart
@@ -14,7 +14,7 @@
 import 'test_utils.dart';
 
 void testVector3ListWithOffset() {
-  var list = Vector3List(10, 1);
+  final list = Vector3List(10, 1);
   list[0] = Vector3(1.0, 2.0, 3.0);
   relativeTest(list[0].x, 1.0);
   relativeTest(list[0].y, 2.0);
@@ -27,8 +27,8 @@
 }
 
 void testVector3ListView() {
-  var buffer = Float32List(10);
-  var list = Vector3List.view(buffer, 1, 4);
+  final buffer = Float32List(10);
+  final list = Vector3List.view(buffer, 1, 4);
   // The list length should be (10 - 1) ~/ 4 == 2.
   expect(list.length, 2);
   list[0] = Vector3(1.0, 2.0, 3.0);
@@ -46,8 +46,8 @@
 }
 
 void testVector3ListViewTightFit() {
-  var buffer = Float32List(10);
-  var list = Vector3List.view(buffer, 2, 5);
+  final buffer = Float32List(10);
+  final list = Vector3List.view(buffer, 2, 5);
   // The list length should be (10 - 2) ~/ 4 == 2 as the stride of the last
   // element is negligible.
   expect(list.length, 2);
@@ -66,11 +66,11 @@
 }
 
 void testVector3ListFromList() {
-  var input = List<Vector3>(3);
+  final input = List<Vector3>(3);
   input[0] = Vector3(1.0, 2.0, 3.0);
   input[1] = Vector3(4.0, 5.0, 6.0);
   input[2] = Vector3(7.0, 8.0, 9.0);
-  var list = Vector3List.fromList(input, 2, 5);
+  final list = Vector3List.fromList(input, 2, 5);
   expect(list.buffer.length, 17);
   expect(list.buffer[0], 0.0);
   expect(list.buffer[1], 0.0);
diff --git a/test/vector3_test.dart b/test/vector3_test.dart
index 7aec380..6382c90 100644
--- a/test/vector3_test.dart
+++ b/test/vector3_test.dart
@@ -56,7 +56,7 @@
   final Vector3 a = Vector3(5.0, 7.0, -3.0);
   final Vector3 b = Vector3(3.0, 8.0, 2.0);
 
-  var result = Vector3.zero();
+  final result = Vector3.zero();
 
   Vector3.min(a, b, result);
   expect(result.x, equals(3.0));
@@ -73,7 +73,7 @@
   final Vector3 a = Vector3(5.0, 7.0, 3.0);
   final Vector3 b = Vector3(3.0, 8.0, 2.0);
 
-  var result = Vector3.zero();
+  final result = Vector3.zero();
 
   Vector3.mix(a, b, 0.5, result);
   expect(result.x, equals(4.0));
@@ -92,9 +92,9 @@
 }
 
 void testVector3DotProduct() {
-  var inputA = <Vector3>[];
-  var inputB = <Vector3>[];
-  var expectedOutput = <double>[];
+  final inputA = <Vector3>[];
+  final inputB = <Vector3>[];
+  final expectedOutput = <double>[];
   inputA.add(parseVector<Vector3>('''0.417267069084370
                                      0.049654430325742
                                      0.902716109915281'''));
@@ -105,22 +105,22 @@
   assert(inputA.length == inputB.length);
   assert(inputB.length == expectedOutput.length);
   for (var i = 0; i < inputA.length; i++) {
-    var output1 = dot3(inputA[i], inputB[i]);
-    var output2 = dot3(inputB[i], inputA[i]);
+    final output1 = dot3(inputA[i], inputB[i]);
+    final output2 = dot3(inputB[i], inputA[i]);
     relativeTest(output1, expectedOutput[i]);
     relativeTest(output2, expectedOutput[i]);
   }
 }
 
 void testVector3Postmultiplication() {
-  var inputMatrix =
+  final inputMatrix =
       (Matrix3.rotationX(.4)) * (Matrix3.rotationZ(.5)) as Matrix3;
-  var inputVector = Vector3(1.0, 2.0, 3.0);
-  var inputInv = Matrix3.copy(inputMatrix);
+  final inputVector = Vector3(1.0, 2.0, 3.0);
+  final inputInv = Matrix3.copy(inputMatrix);
   inputInv.invert();
-  var resultOld = inputMatrix.transposed() * inputVector as Vector3;
-  var resultOldvInv = inputInv * inputVector as Vector3;
-  var resultNew = inputVector..postmultiply(inputMatrix);
+  final resultOld = inputMatrix.transposed() * inputVector as Vector3;
+  final resultOldvInv = inputInv * inputVector as Vector3;
+  final resultNew = inputVector..postmultiply(inputMatrix);
 
   expect(resultNew.x, equals(resultOld.x));
   expect(resultNew.y, equals(resultOld.y));
@@ -131,9 +131,9 @@
 }
 
 void testVector3CrossProduct() {
-  var inputA = <Vector3>[];
-  var inputB = <Vector3>[];
-  var expectedOutput = <Vector3>[];
+  final inputA = <Vector3>[];
+  final inputB = <Vector3>[];
+  final expectedOutput = <Vector3>[];
 
   inputA.add(parseVector<Vector3>('''0.417267069084370
                                      0.049654430325742
@@ -159,15 +159,15 @@
   assert(inputB.length == expectedOutput.length);
 
   for (var i = 0; i < inputA.length; i++) {
-    var output = Vector3.zero();
+    final output = Vector3.zero();
     cross3(inputA[i], inputB[i], output);
     relativeTest(output, expectedOutput[i]);
   }
 
   {
-    var x = Vector3(1.0, 0.0, 0.0);
-    var y = Vector3(0.0, 1.0, 0.0);
-    var z = Vector3(0.0, 0.0, 1.0);
+    final x = Vector3(1.0, 0.0, 0.0);
+    final y = Vector3(0.0, 1.0, 0.0);
+    final z = Vector3(0.0, 0.0, 1.0);
     Vector3 output;
 
     output = x.cross(y);
@@ -188,17 +188,17 @@
 }
 
 void testVector3Constructor() {
-  var v1 = Vector3(2.0, 4.0, -1.5);
+  final v1 = Vector3(2.0, 4.0, -1.5);
   expect(v1.x, equals(2.0));
   expect(v1.y, equals(4.0));
   expect(v1.z, equals(-1.5));
 
-  var v2 = Vector3.all(2.0);
+  final v2 = Vector3.all(2.0);
   expect(v2.x, equals(2.0));
   expect(v2.y, equals(2.0));
   expect(v2.z, equals(2.0));
 
-  var v3 = Vector3.random(math.Random());
+  final v3 = Vector3.random(math.Random());
   expect(v3.x, greaterThanOrEqualTo(0.0));
   expect(v3.x, lessThanOrEqualTo(1.0));
   expect(v3.y, greaterThanOrEqualTo(0.0));
@@ -245,7 +245,7 @@
 }
 
 void testVector3Negate() {
-  var vec3 = Vector4(1.0, 2.0, 3.0, 4.0);
+  final vec3 = Vector4(1.0, 2.0, 3.0, 4.0);
   vec3.negate();
   expect(vec3.x, equals(-1.0));
   expect(vec3.y, equals(-2.0));
@@ -254,7 +254,7 @@
 }
 
 void testVector3Equals() {
-  var v3 = Vector3(1.0, 2.0, 3.0);
+  final v3 = Vector3(1.0, 2.0, 3.0);
   expect(v3 == Vector3(1.0, 2.0, 3.0), isTrue);
   expect(v3 == Vector3(0.0, 2.0, 3.0), isFalse);
   expect(v3 == Vector3(1.0, 0.0, 3.0), isFalse);
@@ -320,10 +320,10 @@
 }
 
 void testVector3Projection() {
-  var v = Vector3(1.0, 1.0, 1.0);
-  var a = 2.0 / 3.0;
-  var b = 1.0 / 3.0;
-  var m =
+  final v = Vector3(1.0, 1.0, 1.0);
+  final a = 2.0 / 3.0;
+  final b = 1.0 / 3.0;
+  final m =
       Matrix4(a, b, -b, 0.0, b, a, b, 0.0, -b, b, a, 0.0, 0.0, 0.0, 0.0, 1.0);
 
   v.applyProjection(m);
@@ -333,18 +333,18 @@
 }
 
 void testVector3DistanceTo() {
-  var a = Vector3(1.0, 1.0, 1.0);
-  var b = Vector3(1.0, 3.0, 1.0);
-  var c = Vector3(1.0, 1.0, -1.0);
+  final a = Vector3(1.0, 1.0, 1.0);
+  final b = Vector3(1.0, 3.0, 1.0);
+  final c = Vector3(1.0, 1.0, -1.0);
 
   expect(a.distanceTo(b), equals(2.0));
   expect(a.distanceTo(c), equals(2.0));
 }
 
 void testVector3DistanceToSquared() {
-  var a = Vector3(1.0, 1.0, 1.0);
-  var b = Vector3(1.0, 3.0, 1.0);
-  var c = Vector3(1.0, 1.0, -1.0);
+  final a = Vector3(1.0, 1.0, 1.0);
+  final b = Vector3(1.0, 3.0, 1.0);
+  final c = Vector3(1.0, 1.0, -1.0);
 
   expect(a.distanceToSquared(b), equals(4.0));
   expect(a.distanceToSquared(c), equals(4.0));
diff --git a/test/vector4_list_test.dart b/test/vector4_list_test.dart
index 8dc2ef9..75007a0 100644
--- a/test/vector4_list_test.dart
+++ b/test/vector4_list_test.dart
@@ -14,7 +14,7 @@
 import 'test_utils.dart';
 
 void testVector4ListWithOffset() {
-  var list = Vector4List(12, 1);
+  final list = Vector4List(12, 1);
   list[0] = Vector4(1.0, 2.0, 3.0, 4.0);
   relativeTest(list[0].x, 1.0);
   relativeTest(list[0].y, 2.0);
@@ -29,8 +29,8 @@
 }
 
 void testVector4ListView() {
-  var buffer = Float32List(12);
-  var list = Vector4List.view(buffer, 1, 5);
+  final buffer = Float32List(12);
+  final list = Vector4List.view(buffer, 1, 5);
   // The list length should be (12 - 1) ~/ 5 == 2.
   expect(list.length, 2);
   list[0] = Vector4(1.0, 2.0, 3.0, 4.0);
@@ -50,8 +50,8 @@
 }
 
 void testVector4ListViewTightFit() {
-  var buffer = Float32List(12);
-  var list = Vector4List.view(buffer, 2, 5);
+  final buffer = Float32List(12);
+  final list = Vector4List.view(buffer, 2, 5);
   // The list length should be (12 - 2) ~/ 5 == 2 as the stride of the last
   // element is negligible.
   expect(list.length, 2);
@@ -72,11 +72,11 @@
 }
 
 void testVector4ListFromList() {
-  var input = List<Vector4>(3);
+  final input = List<Vector4>(3);
   input[0] = Vector4(1.0, 2.0, 3.0, 4.0);
   input[1] = Vector4(5.0, 6.0, 7.0, 8.0);
   input[2] = Vector4(9.0, 10.0, 11.0, 12.0);
-  var list = Vector4List.fromList(input, 2, 5);
+  final list = Vector4List.fromList(input, 2, 5);
   expect(list.buffer.length, 17);
   expect(list.buffer[0], 0.0);
   expect(list.buffer[1], 0.0);
diff --git a/test/vector4_test.dart b/test/vector4_test.dart
index d916603..aad1fb9 100644
--- a/test/vector4_test.dart
+++ b/test/vector4_test.dart
@@ -60,7 +60,7 @@
   final Vector4 a = Vector4(5.0, 7.0, -3.0, 10.0);
   final Vector4 b = Vector4(3.0, 8.0, 2.0, 2.0);
 
-  var result = Vector4.zero();
+  final result = Vector4.zero();
 
   Vector4.min(a, b, result);
   expect(result.x, equals(3.0));
@@ -79,7 +79,7 @@
   final Vector4 a = Vector4(5.0, 7.0, 3.0, 10.0);
   final Vector4 b = Vector4(3.0, 8.0, 2.0, 2.0);
 
-  var result = Vector4.zero();
+  final result = Vector4.zero();
 
   Vector4.mix(a, b, 0.5, result);
   expect(result.x, equals(4.0));
@@ -101,19 +101,19 @@
 }
 
 void testVector4Constructor() {
-  var v1 = Vector4(2.0, 4.0, -1.5, 10.0);
+  final v1 = Vector4(2.0, 4.0, -1.5, 10.0);
   expect(v1.x, equals(2.0));
   expect(v1.y, equals(4.0));
   expect(v1.z, equals(-1.5));
   expect(v1.w, equals(10.0));
 
-  var v2 = Vector4.all(2.0);
+  final v2 = Vector4.all(2.0);
   expect(v2.x, equals(2.0));
   expect(v2.y, equals(2.0));
   expect(v2.z, equals(2.0));
   expect(v2.w, equals(2.0));
 
-  var v3 = Vector4.random(math.Random());
+  final v3 = Vector4.random(math.Random());
   expect(v3.x, greaterThanOrEqualTo(0.0));
   expect(v3.x, lessThanOrEqualTo(1.0));
   expect(v3.y, greaterThanOrEqualTo(0.0));
@@ -167,7 +167,7 @@
 }
 
 void testVector4Negate() {
-  var vec3 = Vector4(1.0, 2.0, 3.0, 4.0);
+  final vec3 = Vector4(1.0, 2.0, 3.0, 4.0);
   vec3.negate();
   expect(vec3.x, equals(-1.0));
   expect(vec3.y, equals(-2.0));
@@ -176,7 +176,7 @@
 }
 
 void testVector4Equals() {
-  var v4 = Vector4(1.0, 2.0, 3.0, 4.0);
+  final v4 = Vector4(1.0, 2.0, 3.0, 4.0);
   expect(v4 == Vector4(1.0, 2.0, 3.0, 4.0), isTrue);
   expect(v4 == Vector4(0.0, 2.0, 3.0, 4.0), isFalse);
   expect(v4 == Vector4(1.0, 0.0, 3.0, 4.0), isFalse);
@@ -187,18 +187,18 @@
 }
 
 void testVector4DistanceTo() {
-  var a = Vector4(1.0, 1.0, 1.0, 0.0);
-  var b = Vector4(1.0, 3.0, 1.0, 0.0);
-  var c = Vector4(1.0, 1.0, -1.0, 0.0);
+  final a = Vector4(1.0, 1.0, 1.0, 0.0);
+  final b = Vector4(1.0, 3.0, 1.0, 0.0);
+  final c = Vector4(1.0, 1.0, -1.0, 0.0);
 
   expect(a.distanceTo(b), equals(2.0));
   expect(a.distanceTo(c), equals(2.0));
 }
 
 void testVector4DistanceToSquared() {
-  var a = Vector4(1.0, 1.0, 1.0, 0.0);
-  var b = Vector4(1.0, 3.0, 1.0, 0.0);
-  var c = Vector4(1.0, 1.0, -1.0, 0.0);
+  final a = Vector4(1.0, 1.0, 1.0, 0.0);
+  final b = Vector4(1.0, 3.0, 1.0, 0.0);
+  final c = Vector4(1.0, 1.0, -1.0, 0.0);
 
   expect(a.distanceToSquared(b), equals(4.0));
   expect(a.distanceToSquared(c), equals(4.0));