# #firebase #flutter #google-cloud-firestore
Вопрос:
@override
Widget build(BuildContext context) {
return Container(
color: Colors.white,
child: Column(
children: [
if(_dataLength!=0)
FutureBuilder(
import 'package:carousel_slider/carousel_slider.dart';
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:dots_indicator/dots_indicator.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
class ImageSlider extends StatefulWidget {
const ImageSlider({Key? key}) : super(key: key);
@override
_ImageSliderState createState() => _ImageSliderState();
}
class _ImageSliderState extends State<ImageSlider> {
int _index = 0;
int _dataLength=1;
@override
void initState() {
getSliderImageFromDb();
super.initState();
}
Future getSliderImageFromDb() async {
var _fireStore = FirebaseFirestore.instance;
QuerySnapshot snapshot = await _fireStore.collection('slider').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: (context, snapShot) {
return snapShot.data == null ? const Center(child: CircularProgressIndicator(),) : Padding(
padding: const EdgeInsets.only(top: 4),
child: CarouselSlider.builder(
itemCount: snapShot.data!.length, // getting error here
itemBuilder: (context, int index, int add){
DocumentSnapshot sliderImage = snapShot.data![index]; // getting error here
Object? getImage = sliderImage.data();
return SizedBox(
width: MediaQuery.of(context).size.width,
child: Image.network(getImage!['image'],fit: BoxFit.fill)); // getting error here
},
options: CarouselOptions(
viewportFraction: 1,
initialPage: 0,
autoPlay: true,
height: 150,
onPageChanged: (int i,carouselPageChangedReason){
setState(() {
_index=i;
});
}
)),
);
},
),
if(_dataLength!=0)
DotsIndicator(
dotsCount: _dataLength,
position: _index.toDouble(),
decorator: DotsDecorator(
size: const Size.square(5.0),
activeSize: const Size(18.0, 5.0),
activeShape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(5.0)),
activeColor: Theme.of(context).primaryColor
),
)
],
),
);
}
}
future: getSliderImageFromDb(),
builder: (context, snapShot) {
return snapShot.data == null ? const Center(child: CircularProgressIndicator(),) : Padding(
padding: const EdgeInsets.only(top: 4),
child: CarouselSlider.builder(
itemCount: snapShot.data!.length, // getting error here
itemBuilder: (context, int index, int add){
DocumentSnapshot sliderImage = snapShot.data![index]; // getting error here
Object? getImage = sliderImage.data();
return SizedBox(
width: MediaQuery.of(context).size.width,
child: Image.network(getImage!['image'],fit: BoxFit.fill)); // getting error here
},
options: CarouselOptions(
viewportFraction: 1,
initialPage: 0,
autoPlay: true,
height: 150,
onPageChanged: (int i,carouselPageChangedReason){
setState(() {
_index=i;
});
}
)),
);
},
),