У меня есть страница настроек, доступ к которой осуществляется из верхней панели приложения. Это моя вторая страница, и ее содержимое - это код, полученный из примера google_sign_in: https://pub.dev/packages/google_sign_in/example
Практически никаких изменений в коде примера.
Я могу чтобы перейти на мою вторую страницу с моей первой и войти в Google без каких-либо проблем, и когда я перезагружаю приложение и go на страницу настроек, он автоматически выполняет вход. После того, как я вошел в систему и закрыл страницу настроек, вернуться на мою основную страницу, а затем снова go на страницу настроек, я застрял на «вы не вошли в систему», и ни одна из моих кнопок не работает.
Вот как я получаю доступ моя страница настроек:
void handleClick(String value) {
switch (value) {
case 'Settings':
Navigator.of(context).popUntil((route) => route.isFirst);
Navigator.push(context, MaterialPageRoute
(builder: (BuildContext context) => SignInDemo()));
break;
}
}
Я пробовал создать RaisedButton onPressed: () => Navigator.pop (context). Он работает для закрытия экрана, но то же самое происходит, когда я пытаюсь снова открыть ... Он просто говорит: «Вы в настоящее время не вошли в систему», а моя кнопка входа ничего не делает.
Кто-нибудь знает как я могу правильно загрузить все и показать, что я вошел в систему после второго доступа к моей странице входа?
Думаю, я понял это ..
При входе я меня переполняет следующая ошибка:
Exception: Could not instantiate image codec.
Это приводит к тому, что моя вторая страница ломается sh и не перезагружается должным образом. Итак, он просто висит в сломанном состоянии. Устранит ошибку и проверит ее.
EDIT:
Я избавился от ошибки, удалив следующие строки:
ListTile(
// leading: GoogleUserCircleAvatar(
// identity: _currentUser,
// ),
// title: Text(_currentUser.displayName ?? ''),
// subtitle: Text(_currentUser.email ?? ''),
),
Проблема не устранена. Скоро будет обновлено.
РЕДАКТИРОВАТЬ: Понятия не имею, почему успешный вход ломает мою страницу 2. Ошибок нет .. Просто перестает работать. : |
РЕДАКТИРОВАТЬ:
Полу-обходной путь:
Future<void> _handleSignIn() async {
_googleSignIn.signOut();
GoogleSignInAccount googleUser;
try {
googleUser = await _googleSignIn.signIn();
} catch (e) {
throw Error();
}
GoogleSignInAuthentication googleAuth = await googleUser.authentication;
}
Моя кнопка снова работает. Тем не менее, я просто выхожу из системы и снова захожу.
Нашел другой обходной путь, но он не идеален:
void handleClick(String value) {
switch (value) {
case 'Settings':
_googleSignIn.signOut();
_googleSignIn.signIn();
Navigator.of(context).popUntil((route) => route.isFirst);
Navigator.push(context, new MaterialPageRoute
(builder: (BuildContext context) => new SignInDemo()));
break;
}
}
В основном меня каждый раз подписывает и выходит.