参数类型“User”不能分配给参数类型“Future<dynamic>”。? [复制]
Posted
技术标签:
【中文标题】参数类型“User”不能分配给参数类型“Future<dynamic>”。? [复制]【英文标题】:The argument type 'User' can't be assigned to the parameter type 'Future<dynamic>'.? [duplicate] 【发布时间】:2021-06-13 02:29:38 【问题描述】:我尝试像往常一样使用 Firebase 实例,但在这种情况下,我遇到了一个错误,我的问题是如何在我的代码中修复此错误:
The argument type 'User' can't be assigned to the parameter type 'Future<dynamic>'.
class Messages extends StatelessWidget
@override
Widget build(BuildContext context)
return FutureBuilder(
future: FirebaseAuth.instance.currentUser,
builder: (context, futureSnapshot)
if (futureSnapshot.connectionState == ConnectionState.waiting)
return Center(
child: CircularProgressIndicator());
return StreamBuilder(
stream: FirebaseFirestore.instance
.collection('chat')
.orderBy('created', descending: true)
.snapshots(),
builder: (context, chatSnapshot)
if (chatSnapshot.connectionState == ConnectionState.waiting)
return Center(
child: CircularProgressIndicator(),
);
final chatdocs = chatSnapshot.data.docs;
return ListView.builder(
itemCount: chatdocs.length,
itemBuilder: (context, index) => MessageBubble(
chatdocs[index]['text'],
chatdocs[index]['userId'] == futureSnapshot.data.uid,
));
希望任何人都可以提供帮助。 也许任何人都可以向我解释这一点,而不仅仅是给出答案
【问题讨论】:
【参考方案1】:FirebaseAuth.instance.currentUser 是 User 类型,它不是 Future。
因此在这种情况下您不需要使用 FutureBuilder。
class Messages extends StatelessWidget
@override
Widget build(BuildContext context)
final currentUser = FirebaseAuth.instance.currentUser;
return StreamBuilder(
stream: FirebaseFirestore.instance
.collection('chat')
.orderBy('created', descending: true)
.snapshots(),
builder: (context, chatSnapshot)
if (chatSnapshot.connectionState == ConnectionState.waiting)
return Center(
child: CircularProgressIndicator(),
);
final chatdocs = chatSnapshot.data.docs;
return ListView.builder(
itemCount: chatdocs.length,
itemBuilder: (context, index)
return MessageBubble(
chatdocs[index]['text'],
chatdocs[index]['userId'] == currentUser.data.uid,
);
,
);
,
);
【讨论】:
但我是否使用它?我已经返回一个未来的建设者 删除 FutureBuilder,你不需要它。将 FirebaseAuth.instance.currentUser 存储在 build 方法中的变量中,并在您将返回的 StreamBuilder 中使用它。 啊不应该使用streambuilder你可以添加一个代码答案,因为我真的不明白我如何在stream builder中使用它 我添加了一些代码,请检查我编辑的答案 谢谢 :) 有美好的一天以上是关于参数类型“User”不能分配给参数类型“Future<dynamic>”。? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
类型'字符串|的参数用户'不能分配给'string'类型的参数
颤振列表错误参数类型'List'不能分配给参数类型'String'
获取错误“未知”类型的参数不能分配给“错误”类型的参数 |空值'
参数类型“对象?”不能分配给参数类型'String'最新版本