[google_sign_in] Bump app-facing version for NNBD stable (#3637)

diff --git a/packages/google_sign_in/google_sign_in/CHANGELOG.md b/packages/google_sign_in/google_sign_in/CHANGELOG.md
index 85c8cc4..57d1c9b 100644
--- a/packages/google_sign_in/google_sign_in/CHANGELOG.md
+++ b/packages/google_sign_in/google_sign_in/CHANGELOG.md
@@ -1,11 +1,6 @@
-## 5.0.0-nullsafety.1
+## 5.0.0
 
-* Document that the web plugin is not endorsed in the `nullsafety` prerelease for now.
-
-## 5.0.0-nullsafety
-
-* Migrate to nnbd.
-* **Breaking change**: web plugins aren't endorsed in null-safe plugins yet.
+* Migrate to null safety.
 
 ## 4.5.9
 
diff --git a/packages/google_sign_in/google_sign_in/example/lib/main.dart b/packages/google_sign_in/google_sign_in/example/lib/main.dart
index a738c24..e003225 100755
--- a/packages/google_sign_in/google_sign_in/example/lib/main.dart
+++ b/packages/google_sign_in/google_sign_in/example/lib/main.dart
@@ -33,31 +33,31 @@
 }
 
 class SignInDemoState extends State<SignInDemo> {
-  GoogleSignInAccount _currentUser;
-  String _contactText;
+  GoogleSignInAccount? _currentUser;
+  String _contactText = '';
 
   @override
   void initState() {
     super.initState();
-    _googleSignIn.onCurrentUserChanged.listen((GoogleSignInAccount account) {
+    _googleSignIn.onCurrentUserChanged.listen((GoogleSignInAccount? account) {
       setState(() {
         _currentUser = account;
       });
       if (_currentUser != null) {
-        _handleGetContact();
+        _handleGetContact(_currentUser!);
       }
     });
     _googleSignIn.signInSilently();
   }
 
-  Future<void> _handleGetContact() async {
+  Future<void> _handleGetContact(GoogleSignInAccount user) async {
     setState(() {
       _contactText = "Loading contact info...";
     });
     final http.Response response = await http.get(
-      'https://people.googleapis.com/v1/people/me/connections'
-      '?requestMask.includeField=person.names',
-      headers: await _currentUser.authHeaders,
+      Uri.parse('https://people.googleapis.com/v1/people/me/connections'
+          '?requestMask.includeField=person.names'),
+      headers: await user.authHeaders,
     );
     if (response.statusCode != 200) {
       setState(() {
@@ -68,7 +68,7 @@
       return;
     }
     final Map<String, dynamic> data = json.decode(response.body);
-    final String namedContact = _pickFirstNamedContact(data);
+    final String? namedContact = _pickFirstNamedContact(data);
     setState(() {
       if (namedContact != null) {
         _contactText = "I see you know $namedContact!";
@@ -78,14 +78,14 @@
     });
   }
 
-  String _pickFirstNamedContact(Map<String, dynamic> data) {
-    final List<dynamic> connections = data['connections'];
-    final Map<String, dynamic> contact = connections?.firstWhere(
+  String? _pickFirstNamedContact(Map<String, dynamic> data) {
+    final List<dynamic>? connections = data['connections'];
+    final Map<String, dynamic>? contact = connections?.firstWhere(
       (dynamic contact) => contact['names'] != null,
       orElse: () => null,
     );
     if (contact != null) {
-      final Map<String, dynamic> name = contact['names'].firstWhere(
+      final Map<String, dynamic>? name = contact['names'].firstWhere(
         (dynamic name) => name['displayName'] != null,
         orElse: () => null,
       );
@@ -107,26 +107,27 @@
   Future<void> _handleSignOut() => _googleSignIn.disconnect();
 
   Widget _buildBody() {
-    if (_currentUser != null) {
+    GoogleSignInAccount? user = _currentUser;
+    if (user != null) {
       return Column(
         mainAxisAlignment: MainAxisAlignment.spaceAround,
         children: <Widget>[
           ListTile(
             leading: GoogleUserCircleAvatar(
-              identity: _currentUser,
+              identity: user,
             ),
-            title: Text(_currentUser.displayName ?? ''),
-            subtitle: Text(_currentUser.email ?? ''),
+            title: Text(user.displayName ?? ''),
+            subtitle: Text(user.email),
           ),
           const Text("Signed in successfully."),
-          Text(_contactText ?? ''),
+          Text(_contactText),
           ElevatedButton(
             child: const Text('SIGN OUT'),
             onPressed: _handleSignOut,
           ),
           ElevatedButton(
             child: const Text('REFRESH'),
-            onPressed: _handleGetContact,
+            onPressed: () => _handleGetContact(user),
           ),
         ],
       );
diff --git a/packages/google_sign_in/google_sign_in/example/pubspec.yaml b/packages/google_sign_in/google_sign_in/example/pubspec.yaml
index e35aa9a..b5a1f3e 100755
--- a/packages/google_sign_in/google_sign_in/example/pubspec.yaml
+++ b/packages/google_sign_in/google_sign_in/example/pubspec.yaml
@@ -11,10 +11,10 @@
     # The example app is bundled with the plugin so we use a path dependency on
     # the parent directory to use the current plugin's version.
     path: ../
-  http: ^0.12.0
+  http: ^0.13.0
 
 dev_dependencies:
-  pedantic: ^1.8.0
+  pedantic: ^1.10.0
   integration_test:
     path: ../../../integration_test
   flutter_driver:
@@ -24,5 +24,5 @@
   uses-material-design: true
 
 environment:
-  sdk: ">=2.0.0-dev.28.0 <3.0.0"
+  sdk: ">=2.12.0-259.9.beta <3.0.0"
   flutter: ">=1.12.13+hotfix.4"
diff --git a/packages/google_sign_in/google_sign_in/pubspec.yaml b/packages/google_sign_in/google_sign_in/pubspec.yaml
index ca1fe8d..06fa12c 100644
--- a/packages/google_sign_in/google_sign_in/pubspec.yaml
+++ b/packages/google_sign_in/google_sign_in/pubspec.yaml
@@ -2,7 +2,7 @@
 description: Flutter plugin for Google Sign-In, a secure authentication system
   for signing in with a Google account on Android and iOS.
 homepage: https://github.com/flutter/plugins/tree/master/packages/google_sign_in/google_sign_in
-version: 5.0.0-nullsafety.1
+version: 5.0.0
 
 flutter:
   plugin:
@@ -12,25 +12,26 @@
         pluginClass: GoogleSignInPlugin
       ios:
         pluginClass: FLTGoogleSignInPlugin
-      #web:
-      #  default_package: google_sign_in_web
+      web:
+        default_package: google_sign_in_web
 
 dependencies:
-  google_sign_in_platform_interface: ^2.0.0-nullsafety
+  google_sign_in_platform_interface: ^2.0.0
+  google_sign_in_web: ^0.10.0
   flutter:
     sdk: flutter
-  meta: ^1.3.0-nullsafety.6
+  meta: ^1.3.0
 
 dev_dependencies:
-  http: ^0.12.0
+  http: ^0.13.0
   flutter_driver:
     sdk: flutter
   flutter_test:
     sdk: flutter
-  pedantic: ^1.10.0-nullsafety.1
+  pedantic: ^1.10.0
   integration_test:
     path: ../../integration_test
 
 environment:
-  sdk: ">=2.12.0-0 <3.0.0"
+  sdk: ">=2.12.0-259.9.beta <3.0.0"
   flutter: ">=1.12.13+hotfix.5"