【发布时间】:2022-01-28 01:14:40
【问题描述】:
大家好,我在 YouTube 视频中指的是在 Flutter 移动应用中从 Firestore 的轮播中显示图像。但是有一些我无法解决的问题。希望任何人都可以帮助我完成我的学校项目。谢谢!
import 'package:carousel_slider/carousel_slider.dart';
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:flutter/material.dart';
class BannerSlider extends StatefulWidget {
@override
_BannerSliderState createState() => _BannerSliderState();
}
class _BannerSliderState extends State<BannerSlider> {
int _index = 0;
int _dataLength = 1;
@override
void initState() {
getSliderImageFromDb();
super.initState();
}
Future getSliderImageFromDb() async {
var _fireStore = FirebaseFirestore.instance;
QuerySnapshot snapshot = await _fireStore.collection('Banner').get();
if (mounted) {
setState(() {
_dataLength = snapshot.docs.length;
});
}
return snapshot.docs;
}
@override
Widget build(BuildContext context) {
return Container(
color: Colors.white,
child: Column(
children: [
if (_dataLength != 0)
FutureBuilder(
future: getSliderImageFromDb(),
builder: (_, snapShot) {
return snapShot.data == null
? Center(
child: CircularProgressIndicator(),
)
: Padding(
padding: const EdgeInsets.only(top: 4),
child: CarouselSlider.builder(
itemCount: snapShot.data!.length,
itemBuilder: (BuildContext context, index, int) {
DocumentSnapshot sliderImage =
snapShot.data![index];
Map getImage = sliderImage.data();
return SizedBox(
width: MediaQuery.of(context).size.width,
child: Image.network(
getImage['image'],
fit: BoxFit.fill,
));
},
options: CarouselOptions(
viewportFraction: 1,
initialPage: 0,
autoPlay: true,
height: 150,
onPageChanged:
(int i, carouselPageChangedReason) {
setState(() {
_index = i;
});
})),
);
},
),
],
),
);
}
}
错误是:
- snapShot.data![索引];
Error: The operator '[]' isn't defined for the class 'Object'.
- 'Object' is from 'dart:core'.
Try correcting the operator to an existing operator, or defining a '[]' operator.
snapShot.data![index];
^
2.snapShot.data.length,
Error: The getter 'length' isn't defined for the class 'Object'.
- 'Object' is from 'dart:core'.
Try correcting the name to the name of an existing getter, or defining a getter or field named 'length'.
itemCount: snapShot.data!.length,
^^^^^^
我通过添加空检查尝试了任何建议,但它不起作用。
【问题讨论】:
标签: firebase flutter google-cloud-firestore slider carousel