谁能帮帮我。代码运行良好。但在debug console
中我看到了这个
小部件库捕捉到异常检查运算符用于空值相关的错误小部件是StreamBuilder<DocumentSnapshot<Map<String,dynamic>
当我单击该行时,它会将我带到代码中流构建器的开头。
代码:
return StreamBuilder(
stream: FirebaseFirestore.instance
.collection(userCollection)
.doc(passenger.get("something"))
.snapshots(),
builder: (context, snapshot) {
final status = snapshot.data!["something"];
Color? color;
Icon? icons;
if (status == 'Not Verified') {
color = Colors.red;
icons = const Icon(
Icons.close,
size: 10,
);
}
if (status == 'Pending verification') {
color = Colors.yellow;
icons = const Icon(
Icons.hourglass_bottom,
size: 10,
);
}
if (status == 'Verified') {
color = Colors.green;
icons = const Icon(
Icons.done,
size: 10,
);
}
if (snapshot.hasData) {
return IconButton(
onPressed: onPressed, //onPressed,
icon: Column(
children: [
CircleAvatar(
radius: 48,
backgroundImage: NetworkImage(
snapshot.data!["something"],
),
child: Stack(
children: [
Positioned(
bottom: 5,
right: 5,
child: CircleAvatar(
backgroundColor: color,
foregroundColor: Colors.white,
radius: 7,
child: icons),
),
],
),
),
SizedBox(
width: screenWidth * 0.12,
child: TextScroll(
"${snapshot.data!["something"]} ",
velocity: const Velocity(
pixelsPerSecond: Offset(30, 0)),
style: const TextStyle(
color: Colors.blue, fontSize: 10),
textAlign: TextAlign.center,
),
)
],
),
);
}
return const SizedBox();
},
);
当我导航到另一个屏幕时,第二个屏幕显示错误。我不知道是不是因为这个错误。但请看看为什么我得到这个错误在调试控制台althought特定屏幕正在运行
1条答案
按热度按时间hvvq6cgz1#
如果出了问题
通过使用
!
,你基本上告诉编译器“data
肯定不是null
”。但事实并非如此,这就是抛出错误的原因。在这种情况下,您需要的是:所以把
!
改成?
。这意味着“如果data
不是null
,则从其中取“某个东西”,否则只需将null
放入status
“;另一种选择是简单地将所有代码移到上面
if
,所以你可以确定数据在那里。(除非null
实际上是数据的有效结果)