title: Flutter: I am unable to logout my app with google sign in library. How to do this?
body: <p>I have tried below google sign in example , it is working fine. But when I moved _handleSignOut() function to another screen , it is not signing out. My requirement is after login success, my homepage is visible. On the top of homepage , there is a logout button. on the click of which , I want to logout my app with google.</p>
  
  <pre><code>    import 'dart:async';
      import 'dart:convert' show json;
      import "package:http/http.dart" as http;
      import 'package:flutter/material.dart';
      import 'package:google_sign_in/google_sign_in.dart';
  
      GoogleSignIn _googleSignIn = GoogleSignIn(
        scopes: &lt;String&gt;[
          'email',
          'https://www.googleapis.com/auth/contacts.readonly',
        ],
      );
  
      void main() {
        runApp(
          MaterialApp(
            title: 'Google Sign In',
            home: SignInDemo(),
          ),
        );
      }
  
      class SignInDemo extends StatefulWidget {
        @override
        State createState() =&gt; SignInDemoState();
      }
  
      class SignInDemoState extends State&lt;SignInDemo&gt; {
        GoogleSignInAccount _currentUser;
        String _contactText;
  
        @override
        void initState() {
          super.initState();
          _googleSignIn.onCurrentUserChanged.listen((GoogleSignInAccount account) {
            setState(() {
              _currentUser = account;
            });
            if (_currentUser != null) {
              _handleGetContact();
            }
          });
          _googleSignIn.signInSilently();
        }
  
        Future&lt;void&gt; _handleGetContact() 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,
          );
          if (response.statusCode != 200) {
            setState(() {
              _contactText = "People API gave a ${response.statusCode} "
                  "response. Check logs for details.";
            });
            print('People API ${response.statusCode} response: ${response.body}');
            return;
          }
          final Map&lt;String, dynamic&gt; data = json.decode(response.body);
          final String namedContact = _pickFirstNamedContact(data);
          setState(() {
            if (namedContact != null) {
              _contactText = "I see you know $namedContact!";
            } else {
              _contactText = "No contacts to display.";
            }
          });
        }
  
        String _pickFirstNamedContact(Map&lt;String, dynamic&gt; data) {
          final List&lt;dynamic&gt; connections = data['connections'];
          final Map&lt;String, dynamic&gt; contact = connections?.firstWhere(
            (dynamic contact) =&gt; contact['names'] != null,
            orElse: () =&gt; null,
          );
          if (contact != null) {
            final Map&lt;String, dynamic&gt; name = contact['names'].firstWhere(
              (dynamic name) =&gt; name['displayName'] != null,
              orElse: () =&gt; null,
            );
            if (name != null) {
              return name['displayName'];
            }
          }
          return null;
        }
  
        Future&lt;void&gt; _handleSignIn() async {
          try {
            await _googleSignIn.signIn();
          } catch (error) {
            print(error);
          }
        }
  
        Future&lt;void&gt; _handleSignOut() async {
          _googleSignIn.disconnect();
        }
  
        Widget _buildBody() {
          if (_currentUser != null) {
            return Column(
              mainAxisAlignment: MainAxisAlignment.spaceAround,
              children: &lt;Widget&gt;[
                ListTile(
                  leading: GoogleUserCircleAvatar(
                    identity: _currentUser,
                  ),
                  title: Text(_currentUser.displayName),
                  subtitle: Text(_currentUser.email),
                ),
                const Text("Signed in successfully."),
                Text(_contactText),
                RaisedButton(
                  child: const Text('SIGN OUT'),
                  onPressed: _handleSignOut,
                ),
                RaisedButton(
                  child: const Text('REFRESH'),
                  onPressed: _handleGetContact,
                ),
              ],
            );
          } else {
            return Column(
              mainAxisAlignment: MainAxisAlignment.spaceAround,
              children: &lt;Widget&gt;[
                const Text("You are not currently signed in."),
                RaisedButton(
                  child: const Text('SIGN IN'),
                  onPressed: _handleSignIn,
                ),
              ],
            );
          }
        }
  
        @override
        Widget build(BuildContext context) {
          return Scaffold(
              appBar: AppBar(
                title: const Text('Google Sign In'),
              ),
              body: ConstrainedBox(
                constraints: const BoxConstraints.expand(),
                child: _buildBody(),
              ));
        }
      }
  </code></pre>