@@ -33,31 +33,31 @@ class SignInDemo extends StatefulWidget {
3333}
3434
3535class SignInDemoState extends State <SignInDemo > {
36- GoogleSignInAccount _currentUser;
37- String _contactText;
36+ GoogleSignInAccount ? _currentUser;
37+ String _contactText = '' ;
3838
3939 @override
4040 void initState () {
4141 super .initState ();
42- _googleSignIn.onCurrentUserChanged.listen ((GoogleSignInAccount account) {
42+ _googleSignIn.onCurrentUserChanged.listen ((GoogleSignInAccount ? account) {
4343 setState (() {
4444 _currentUser = account;
4545 });
4646 if (_currentUser != null ) {
47- _handleGetContact ();
47+ _handleGetContact (_currentUser ! );
4848 }
4949 });
5050 _googleSignIn.signInSilently ();
5151 }
5252
53- Future <void > _handleGetContact () async {
53+ Future <void > _handleGetContact (GoogleSignInAccount user ) async {
5454 setState (() {
5555 _contactText = "Loading contact info..." ;
5656 });
5757 final http.Response response = await http.get (
58- 'https://people.googleapis.com/v1/people/me/connections'
59- '?requestMask.includeField=person.names' ,
60- headers: await _currentUser .authHeaders,
58+ Uri . parse ( 'https://people.googleapis.com/v1/people/me/connections'
59+ '?requestMask.includeField=person.names' ) ,
60+ headers: await user .authHeaders,
6161 );
6262 if (response.statusCode != 200 ) {
6363 setState (() {
@@ -68,7 +68,7 @@ class SignInDemoState extends State<SignInDemo> {
6868 return ;
6969 }
7070 final Map <String , dynamic > data = json.decode (response.body);
71- final String namedContact = _pickFirstNamedContact (data);
71+ final String ? namedContact = _pickFirstNamedContact (data);
7272 setState (() {
7373 if (namedContact != null ) {
7474 _contactText = "I see you know $namedContact !" ;
@@ -78,14 +78,14 @@ class SignInDemoState extends State<SignInDemo> {
7878 });
7979 }
8080
81- String _pickFirstNamedContact (Map <String , dynamic > data) {
82- final List <dynamic > connections = data['connections' ];
83- final Map <String , dynamic > contact = connections? .firstWhere (
81+ String ? _pickFirstNamedContact (Map <String , dynamic > data) {
82+ final List <dynamic >? connections = data['connections' ];
83+ final Map <String , dynamic >? contact = connections? .firstWhere (
8484 (dynamic contact) => contact['names' ] != null ,
8585 orElse: () => null ,
8686 );
8787 if (contact != null ) {
88- final Map <String , dynamic > name = contact['names' ].firstWhere (
88+ final Map <String , dynamic >? name = contact['names' ].firstWhere (
8989 (dynamic name) => name['displayName' ] != null ,
9090 orElse: () => null ,
9191 );
@@ -107,26 +107,27 @@ class SignInDemoState extends State<SignInDemo> {
107107 Future <void > _handleSignOut () => _googleSignIn.disconnect ();
108108
109109 Widget _buildBody () {
110- if (_currentUser != null ) {
110+ GoogleSignInAccount ? user = _currentUser;
111+ if (user != null ) {
111112 return Column (
112113 mainAxisAlignment: MainAxisAlignment .spaceAround,
113114 children: < Widget > [
114115 ListTile (
115116 leading: GoogleUserCircleAvatar (
116- identity: _currentUser ,
117+ identity: user ,
117118 ),
118- title: Text (_currentUser .displayName ?? '' ),
119- subtitle: Text (_currentUser .email ?? '' ),
119+ title: Text (user .displayName ?? '' ),
120+ subtitle: Text (user .email),
120121 ),
121122 const Text ("Signed in successfully." ),
122- Text (_contactText ?? '' ),
123+ Text (_contactText),
123124 ElevatedButton (
124125 child: const Text ('SIGN OUT' ),
125126 onPressed: _handleSignOut,
126127 ),
127128 ElevatedButton (
128129 child: const Text ('REFRESH' ),
129- onPressed: _handleGetContact,
130+ onPressed: () => _handleGetContact (user) ,
130131 ),
131132 ],
132133 );
0 commit comments