Итак, попробовав кое-что, я наконец-то исправил эту ошибку. решил опубликовать ответ, так как этот вопрос не имеет никакого решения онлайн. по крайней мере, я не мог найти один. надеюсь, это поможет людям, имеющим ту же проблему
, то, что я сначала сделал, это объявил строку, содержащую значение 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, если хотите, чтобы это также работало для меня, это выглядело более естественным для интерфейса.