Хотите напечатать электронную почту в ящике по умолчанию android, но с ошибкой "Closure ()" - PullRequest
0 голосов
/ 02 апреля 2020

** Хотите распечатать идентификатор электронной почты учетной записи на выдвижном ящике ** Я создаю приложение Flutter, и у меня возникают проблемы с анализом идентификатора электронной почты пользователя с помощью метода входа Google, мое приложение хорошо выполняет вход с помощью Google Sign но я не могу получить доступ к данным пользователя из функции user.email. Я пытался использовать другую функцию Future asyn c, но я все еще там застрял.

Пожалуйста, найдите возможный способ решения моей проблемы, Примечание: Я попытался выполнить поиск в Интернете и перепробовал почти все возможные источники

class _ExtendedHomeState extends State<ExtendedHome> {
final GoogleSignInAccount googleSignInAccount = await googleSignIn.signIn();
final GoogleSignInAuthentication googleSignInAuthentication =
await googleSignInAccount.authentication;
final AuthCredential credential = GoogleAuthProvider.getCredential(
  accessToken: googleSignInAuthentication.accessToken,
  idToken: googleSignInAuthentication.idToken,
);
final AuthResult authResult = await _auth.signInWithCredential(credential);
final FirebaseUser user = authResult.user;
assert(await user.getIdToken() != null);
final FirebaseUser currentUser = await _auth.currentUser();
email = user.email;
imageUrl = user.photoUrl;
return email;
 }
 printEmail() async
  {
signInWithGoogle();
String email = await signInWithGoogle();
print(email);
return email;
  }
 @override
 Widget build(BuildContext context)
   {
   return MaterialApp(
  debugShowCheckedModeBanner: false,
  home: DefaultTabController(length: 2,
   child: Scaffold(
     drawer: Drawer(
       elevation: 16.0,
       child: ListView(
         children: <Widget>[
           UserAccountsDrawerHeader(
             accountEmail: Text('$printEmail,', style: TextStyle(fontSize: 12),),
           ),
         ],
       ),
     ),

Пожалуйста, предложите любой другой метод, если это возможно. Испытаны все доступные методы, но безуспешно

wanted to print the email in place of dynamic from function 'printEmail'"">

1 Ответ

0 голосов
/ 02 апреля 2020

Вы печатаете там асинхронную функцию c, поэтому она показывает тип этой функции. Если вы хотите распечатать результат, возвращаясь из асинхронной c функции, вы можете использовать FutureBuilder :

accountEmail: FutureBuilder<String>(
     future: printEmail(),
     builder: (context, snapShot) {
       if (snapShot.hasData) {
       return Text(snapShot.data, style: TextStyle(fontSize: 12),);
       } else {
         return Text('Loading');
       }
     }),

Также измените сигнатуру вашей функции на:

Future<String> printEmail() async {
  // Your existing code
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...