Commit dea12ce
committed
fix: cache GoogleProvider in state to prevent double initWithParams on web
On web, GoogleSignIn calls initWithParams eagerly in its constructor.
The provider getter previously created a new GoogleProvider (and thus a
new GoogleSignIn) on every access, and build() called it twice — once
for AuthFlowBuilder and once for OAuthProviderButtonBase. Both called
initWithParams on the singleton GoogleSignInPlugin, triggering a
'Future already completed' race condition.
Fix: convert _GoogleSignInButton to StatefulWidget and create the
GoogleProvider once in initState.1 parent 405bbe7 commit dea12ce
1 file changed
Lines changed: 29 additions & 21 deletions
Lines changed: 29 additions & 21 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
60 | 60 | | |
61 | 61 | | |
62 | 62 | | |
63 | | - | |
| 63 | + | |
64 | 64 | | |
65 | 65 | | |
66 | 66 | | |
| |||
102 | 102 | | |
103 | 103 | | |
104 | 104 | | |
105 | | - | |
106 | | - | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
107 | 108 | | |
108 | | - | |
109 | | - | |
110 | | - | |
111 | | - | |
112 | | - | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
113 | 121 | | |
114 | 122 | | |
115 | 123 | | |
116 | 124 | | |
117 | 125 | | |
118 | | - | |
119 | | - | |
120 | | - | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
121 | 129 | | |
122 | 130 | | |
123 | | - | |
124 | | - | |
| 131 | + | |
| 132 | + | |
125 | 133 | | |
126 | | - | |
| 134 | + | |
127 | 135 | | |
128 | | - | |
129 | | - | |
130 | | - | |
131 | | - | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
132 | 140 | | |
133 | | - | |
134 | | - | |
135 | | - | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
136 | 144 | | |
137 | 145 | | |
138 | 146 | | |
| |||
0 commit comments