[英]NoSuchMethodError: The method 'get' was called on null in Flutter using Dart with Firestore
[英]The method [] was called on Null while syncing Firestore using Flutter
我试图同步用户硬币,但遇到了这个错误:方法 [] 被调用在 Null 上。 如何使用 Firestore 动态显示他的硬币?
Widget firestoreBuild2(BuildContext context) {
return StreamBuilder(
stream: Firestore.instance.collection('users').document('id').snapshots(),
builder: (context, snapshot) {
if (snapshot.hasError)
return Text('Error: ${snapshot.error}');
switch (snapshot.connectionState) {
case ConnectionState.waiting: return Text('Loading...');
default:
var userDocument = snapshot.data;
return Text(
userDocument["coins"],
textAlign: TextAlign.center,
style: TextStyle(
fontFamily: AppTheme2.fontName,
fontWeight: FontWeight.normal,
fontSize: 24,
letterSpacing: 0.0,
color: AppTheme2.white,
),
);
}
},
);
}
}
原来发生这种情况的原因是因为我正在获取一个字符串 'id' 而不是我的变量 id,这就是它导致空错误的原因。
snapshot.connectionState 有四个可能的值:none、waiting、active 或 done。 我不确定连接状态与快照是否有数据之间的关系。
但是你可以做的一件事是检查是否snapshot.hasData,如果snapshot.data为空,它将返回false。
Widget firestoreBuild2(BuildContext context) {
return StreamBuilder(
stream: Firestore.instance.collection('users').document('id').snapshots(),
builder: (context, snapshot) {
if (!snapshot.hasData)
return Text('Loading ...');
var userDocument = snapshot.data;
return Text(
userDocument["coins"],
textAlign: TextAlign.center,
style: TextStyle(
fontFamily: AppTheme2.fontName,
fontWeight: FontWeight.normal,
fontSize: 24,
letterSpacing: 0.0,
color: AppTheme2.white,
),
);
},
);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.