【发布时间】:2021-11-13 12:41:28
【问题描述】:
这是可以帮助我如何将其更改为空安全的代码,我在 .data() 中遇到错误。我将我的项目更改为 null-safety,然后我遇到了这个问题
这是错误
方法'data'不能被无条件调用,因为接收者可以是'null'。 尝试使调用有条件(使用'?.')或向目标添加空检查('!')。
Map<String, dynamic>? documentData = snapshot.data.data();
class HomeSlider extends StatefulWidget {
final String? doc_id;
HomeSlider({this.doc_id});
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<HomeSlider> {
FirebaseServices _firebaseServices = FirebaseServices();
int activeIndex = 1;
@override
Widget build(BuildContext context) {
super.build(context);
return Container(
// height: 200,
child: FutureBuilder(
future: _firebaseServices.sliderRef
.doc(widget.doc_id == null ? "Slider" : widget.doc_id)
.get(),
builder: (context, snapshot) {
if (snapshot.hasError) {
return Center(
child: Text("Error: ${snapshot.error}"),
);
}
if (snapshot.connectionState == ConnectionState.done) {
// the error is here in data()
// Firebase Document Data Map
Map<String, dynamic> documentData = snapshot.data.data();
List? imageList = documentData['images'];
List? suid = documentData['suid'];
return SliderBody(
imageList: imageList,
suid: suid,
);
}
return Center(
child: CircularProgressIndicator(),
);
}));
}}
【问题讨论】:
-
试试 snapshot.data!.data()
-
不。没用。你有什么别的想法吗?
-
您能否提供更多代码,以便我们了解错误来自何处,例如 data() 是什么以及您要实现什么。
-
我已经添加了整个代码
-
当你做 snapshot.data!.data() 时,你还有同样的 null 安全错误吗?