想要在默认的 android 抽屉上打印电子邮件但收到一些“Closure()”错误
Posted
技术标签:
【中文标题】想要在默认的 android 抽屉上打印电子邮件但收到一些“Closure()”错误【英文标题】:Want to print email on the default android drawer but getting some "Closure()" error 【发布时间】:2020-07-14 05:32:54 【问题描述】:**想在抽屉上打印帐户电子邮件 ID ** 我正在构建一个 Flutter 应用程序,我在从 Google 登录方法解析用户的电子邮件 ID 时遇到问题,我的应用程序使用 Google 登录可以很好地登录,但我无法从 user.email 函数访问用户数据我尝试使用不同的 Future 异步功能,但我仍然卡在那里。
请找到一种可能的方法来解决我的问题,注意:我已经尝试搜索网络并尝试了几乎所有可能的来源
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),),
),
],
),
),
如果可能,请建议任何其他方法 尝试了所有可用的方法,但都不成功
【问题讨论】:
【参考方案1】:您正在那里打印一个异步函数,这就是它向您显示该函数类型的原因。如果要打印从异步函数返回的结果,可以使用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
【讨论】:
好吧,另一个简单的问题,如果你能帮忙,我想在那边给出的圈子头像上使用谷歌用户现有的个人资料图片, @SomsubroBanerjee 您可以使用 NetworkImage 小部件从 web-url 加载图像。 不不实际上我想在我的应用程序中使用谷歌的个人资料图片,当他们像 Playstore 中的其他应用程序一样登录时,当您使用您的帐户登录时,应用程序会自动获取您的用户个人资料图片圈内头像明白了吗? @SomsubroBanerjee 那么你的问题是什么?您将获得 google 个人资料图片。在用户对象中,有一个名为 photoUrl 的属性,您可以使用它来获取个人资料图片。 是的,我想使用 photoUrl 方法,但我不能将它与 futurebuilder 一起使用或使用任何其他相关函数以上是关于想要在默认的 android 抽屉上打印电子邮件但收到一些“Closure()”错误的主要内容,如果未能解决你的问题,请参考以下文章
想要使用片段从导航抽屉活动移动到另一个屏幕,以在所有屏幕上显示抽屉
Android官方终于支持 Navigation Drawer(导航抽屉)模式
在 Android Studio 的默认导航抽屉模板中使用按钮在片段之间切换