firebase - 颤抖着在firebase中获得名字
问题描述
当我尝试学习颤振和火力时遇到问题。我正在尝试访问 Google 帐户的名称,但由于类型不兼容,我无法访问。myHomePage
只是我的应用程序的另一个页面。
这是有问题的代码段。
class _BodyState extends State<Body> {
User user ;
void click() {
signInWithGoogle().then((user) => {
this.user = user as User,
Navigator.push(context,
MaterialPageRoute(builder: (context) => MyHomePage(this.user.displayName)))
});
}
Widget googleLoginButton(){
return OutlineButton(
onPressed: this.click,
shape : RoundedRectangleBorder(
borderRadius: BorderRadius.circular(45)),
splashColor: Colors.grey,
borderSide: BorderSide(color: Colors.grey),
child: Padding(padding: EdgeInsets.fromLTRB(0, 10, 0, 10),
child: Row(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Image(image: AssetImage('assets/google_logo.png'), height: 35),
Padding(
padding: EdgeInsets.only(left: 10),
child: Text('Sign in with Google',
style: TextStyle(color: Colors.grey,
fontSize: 25)))],
))
);
}
@override
Widget build(BuildContext context) {
return Align(
alignment: Alignment.center,
child: Padding(
padding: EdgeInsets.all(10),
child: TextField(
decoration: InputDecoration(
prefixIcon: Icon(Icons.person),
labelText: "Type your name : ",
border: OutlineInputBorder(
borderSide: BorderSide(width: 5, color: Colors.black)),
suffixIcon: IconButton(
icon: Icon(Icons.done),
splashColor: Colors.orange,
tooltip: "Submit",
onPressed: this.click,
),
),
)));
}
}
它将显示的错误是这样的:
Unhandled Exception: type 'String' is not a subtype of type 'User'
我了解该类型不兼容,但您可以看到下面的代码(错误的主要部分):
class _BodyState extends State<Body> {
User user ;
void click() {
signInWithGoogle().then((user) => {
this.user = user as User,
Navigator.push(context,
MaterialPageRoute(builder: (context) => MyHomePage(this.user.displayName)))
});
}
我尝试了很多次并找到了其他一些教程,但我无法解决这个问题。方法中的
after是一个字符串,其中包含用户的信息。我想问一下我将如何访问 Google 帐户的名称?user
then
signInWithGoogle
解决方案
FlutterFire 示例中的signInWithGoogle()
函数返回一个未来,它有一个用户属性。尝试:UserCredential
signInWithGoogle().then((userCredential) => {
this.user = userCredential.user;
Navigator.push(context,
MaterialPageRoute(builder: (context) => MyHomePage(this.user.displayName)))
});
推荐阅读
- r - 使用 R 的条件滞后计算
- r - 如何使用 mutate 仅基于数据框其他行的子集创建新列?
- angular - 未捕获的 TypeError:Observable_1.Observable.from 不是函数
- latex - 彩色矩形内容容器(框)的选项
- ios - 是否可以通过使用为 iOS 应用程序实现的通用代码来为 macOS 提供兼容性?
- python - pymongo 方法 find_one 有效,但 find 方法无效
- ruby-on-rails - Rails:“以前”有内置翻译吗?
- java - Java Spring 嵌套 bean
- python - Django Rest 框架:用户更新
- php - cookie 过期时间未设置为在每个浏览器关闭后销毁,但它不起作用