因此,在尝试了一些东西之后,我终于解决了该错误。由于此问题在线上没有任何解决方案,因此决定发布答案。至少我找不到一个。希望这可以帮助遇到同样问题的人
我首先要做的是声明一个包含user.uid值的字符串
String userid;void _getUser() async { FirebaseUser user = await FirebaseAuth.instance.currentUser(); userid=user.uid;}现在在卡片制造器小部件中,我摆脱了多余的东西,并在初始状态下简单地称为_getUser()方法
class _CardBuilderState extends State<CardBuilder> { @override void initState() { super.initState(); _getUser(); } @override Widget build(BuildContext context) { return StreamBuilder( stream: Firestore.instance.collection(UserInformation).document(userid).snapshots(), builder: (context, snapshot) { if(snapshot.hasData) { final userdocument = snapshot.data; final title=userdocument[widget.text]; return Card( margin: EdgeInsets.only(left: 20,right: 20,top: 20), child: ListTile( leading: Icon(widget.icon, color: QamaiGreen, size: 20.0), title: AutoSizeText('${widget.title} : $title',style: TextStyle( fontFamily: 'Montserrat', fontWeight: FontWeight.w600, color: QamaiThemeColor, fontSize: 15),maxLines: 1,overflow: TextOverflow.ellipsis,maxFontSize: 15,minFontSize: 9, ), )); } else{ return Card( margin: EdgeInsets.only(left: 20,right: 20,top: 20), child: ListTile( leading: Icon(widget.icon, color: QamaiGreen, size: 20.0), title: AutoSizeText( 'LOADING...', style: TextStyle( fontFamily: 'Montserrat', fontWeight: FontWeight.w600, color: QamaiThemeColor, fontSize: 15 ), maxLines: 1, overflow: TextOverflow.ellipsis, maxFontSize: 15, minFontSize: 9, ), )); } }); }}最后的更改是添加条件检查快照是否有数据。也将特定文档字段保存在最终变量中对我而言很有帮助
final title=userdocument[widget.text];
最后,添加了else条件来模拟显示显示加载文本的同一卡界面。您可以使用CirculorIndicator,如果您希望它也对我有用,这对于界面来说看起来更加自然。



