nnbd annotation in flutter_goldens_client (#59069)

diff --git a/packages/flutter_goldens_client/lib/skia_client.dart b/packages/flutter_goldens_client/lib/skia_client.dart
index a6b9118..912524d 100644
--- a/packages/flutter_goldens_client/lib/skia_client.dart
+++ b/packages/flutter_goldens_client/lib/skia_client.dart
@@ -93,13 +93,13 @@
   /// The path to the local [Directory] where the goldctl tool is hosted.
   ///
   /// Uses the [platform] environment in this implementation.
-  String get _goldctl => platform.environment[_kGoldctlKey];
+  String/*!*/ get _goldctl => platform.environment[_kGoldctlKey];
 
   /// The path to the local [Directory] where the service account key is
   /// hosted.
   ///
   /// Uses the [platform] environment in this implementation.
-  String get _serviceAccount => platform.environment[_kServiceAccountKey];
+  String/*!*/ get _serviceAccount => platform.environment[_kServiceAccountKey];
 
   /// Prepares the local work space for golden file testing and calls the
   /// goldctl `auth` command.
@@ -116,9 +116,9 @@
       return;
 
     List<String> authArguments;
-    String failureContext;
+    /*late*/ String failureContext;
 
-    switch (ci) {
+    switch (ci/*!*/) {
       case ContinuousIntegrationEnvironment.luci:
         authArguments = <String>[
           'auth',
@@ -378,7 +378,7 @@
       imgtestArguments,
     );
 
-    final String resultStdout = result.stdout.toString();
+    final String/*!*/ resultStdout = result.stdout.toString();
     if (result.exitCode != 0 &&
       !(resultStdout.contains('Untriaged') || resultStdout.contains('negative image'))) {
       final StringBuffer buf = StringBuffer()
@@ -508,8 +508,8 @@
         rawResponse = await utf8.decodeStream(response);
         final List<dynamic> ignores = json.decode(rawResponse) as List<dynamic>;
         for(final dynamic ignore in ignores) {
-          final List<String> ignoredQueries = (ignore['query'] as String).split('&');
-          final String ignoredPullRequest = (ignore['note'] as String).split('/').last;
+          final List<String> ignoredQueries = (ignore['query'] as String/*!*/).split('&');
+          final String ignoredPullRequest = (ignore['note'] as String/*!*/).split('/').last;
           final DateTime expiration = DateTime.parse(ignore['expires'] as String);
           // The currently failing test is in the process of modification.
           if (ignoredQueries.contains('name=$testName')) {
@@ -589,15 +589,16 @@
   /// Returns the current commit hash of the Flutter repository.
   Future<String> _getCurrentCommit() async {
     if (!_flutterRoot.existsSync()) {
-      final StringBuffer buf = StringBuffer()
-        ..writeln('Flutter root could not be found: $_flutterRoot');
-      throw Exception(buf.toString());
+      throw Exception('Flutter root could not be found: $_flutterRoot\n');
     } else {
       final io.ProcessResult revParse = await process.run(
         <String>['git', 'rev-parse', 'HEAD'],
         workingDirectory: _flutterRoot.path,
       );
-      return revParse.exitCode == 0 ? (revParse.stdout as String).trim() : null;
+      if (revParse.exitCode != 0) {
+        throw Exception('Current commit of Flutter can not be found.');
+      }
+      return (revParse.stdout as String/*!*/).trim();
     }
   }
 
@@ -626,15 +627,15 @@
   /// Returns a boolean value to prevent the client from re-authorizing itself
   /// for multiple tests.
   Future<bool> clientIsAuthorized() async {
-    final File authFile = workDirectory?.childFile(fs.path.join(
+    final File authFile = workDirectory.childFile(fs.path.join(
       'temp',
       'auth_opt.json',
-    ));
+    ))/*!*/;
 
     if(await authFile.exists()) {
       final String contents = await authFile.readAsString();
       final Map<String, dynamic> decoded = json.decode(contents) as Map<String, dynamic>;
-      return !(decoded['GSUtil'] as bool);
+      return !(decoded['GSUtil'] as bool/*!*/);
     }
     return false;
   }
@@ -642,11 +643,11 @@
   /// Returns a list of arguments for initializing a tryjob based on the testing
   /// environment.
   List<String> getCIArguments() {
-    String pullRequest;
-    String jobId;
-    String cis;
+    /*late*/ String/*!*/ pullRequest;
+    /*late*/ String/*!*/ jobId;
+    /*late*/ String cis;
 
-    switch (ci) {
+    switch (ci/*!*/) {
       case ContinuousIntegrationEnvironment.luci:
         jobId = platform.environment['LOGDOG_STREAM_PREFIX'].split('/').last;
         final List<String> refs = platform.environment['GOLD_TRYJOB'].split('/');
@@ -682,9 +683,6 @@
 
   /// Create a digest from requested JSON.
   factory SkiaGoldDigest.fromJson(Map<String, dynamic> json) {
-    if (json == null)
-      return null;
-
     return SkiaGoldDigest(
       imageHash: json['digest'] as String,
       paramSet: Map<String, dynamic>.from(json['paramset'] as Map<String, dynamic> ??
@@ -698,21 +696,21 @@
   }
 
   /// Unique identifier for the image associated with the digest.
-  final String imageHash;
+  final String/*!*/ imageHash;
 
   /// Parameter set for the given test, e.g. Platform : Windows.
-  final Map<String, dynamic> paramSet;
+  final Map<String, dynamic>/*!*/ paramSet;
 
   /// Test name associated with the digest, e.g. positive or un-triaged.
-  final String testName;
+  final String/*!*/ testName;
 
   /// Status of the given digest, e.g. positive or un-triaged.
-  final String status;
+  final String/*!*/ status;
 
   /// Validates a given digest against the current testing conditions.
   bool isValid(Platform platform, String name, String expectation) {
     return imageHash == expectation
-      && (paramSet['Platform'] as List<dynamic>).contains(platform.operatingSystem)
+      && (paramSet['Platform'] as List<dynamic>/*!*/).contains(platform.operatingSystem)
       && (platform.environment[_kTestBrowserKey] == null
          || paramSet['Browser'] == platform.environment[_kTestBrowserKey])
       && testName == name