List 将图像引用添加到列表、旋转木马和Firebase

List 将图像引用添加到列表、旋转木马和Firebase,list,firebase,flutter,carousel,List,Firebase,Flutter,Carousel,我不知道该怎么问这个问题,因此,请恕我直言 第一个页面显示不同项目的网格视图,当您单击其中一个项目时,它会将您带到该项目的描述页面 在此描述页面中,它使用了futurebuilder其中future:获取firebasefirestore.instance.collection……get() 然后,它后面跟着一个builder: if (snapshot.connectionState == ConnectionState.done) { Map<String,

我不知道该怎么问这个问题,因此,请恕我直言

第一个页面显示不同项目的网格视图,当您单击其中一个项目时,它会将您带到该项目的描述页面

在此描述页面中,它使用了
futurebuilder
其中
future:
获取
firebasefirestore.instance.collection……get()
然后,它后面跟着一个
builder:

if (snapshot.connectionState == ConnectionState.done) {
              Map<String, dynamic> documentData = snapshot.data.data();

              //Add images
              // imgList.clear();

              imgList.add(documentData['item_images'][0]);
              imgList.add(documentData['item_images'][1]);
              imgList.add(documentData['item_images'][2]);

              return ListView(
                children: [
                  CarouselWithIndicatorDemo(),
                ],);
                }
但那没用。。。如何正确更新此列表

*****************编辑*********************

在dart文件中,我传递以下信息:

Map<String, dynamic> documentData = snapshot.data.data();
List imageList = documentData['item_images'];
另一个dart文件:

class ImageSwipe extends StatefulWidget {
  ImageSwipe({Key key, this.imageList}) : super(key: key);

  final List imageList;

  @override
  _ImageSwipeState createState() => _ImageSwipeState();
}

class _ImageSwipeState extends State<ImageSwipe> {
  int _selectedPage = 0;

  @override
  Widget build(BuildContext context) {
    return Container(
      height: 400.0,
      child: Stack(
        children: [
        PageView(
          onPageChanged: (value) {
            setState(() {
              _selectedPage = value;
            });
          },
          children: [
            for (var i = 0; i < widget.imageList.length; i++)
              Container(
                child: FadeInImage.assetNetwork(
                  placeholder: 'assets/missingImage.jpg',
                  image: widget
                      .imageList[i],
                  fit: BoxFit.cover,
                ),
              ),
          ],
        ),
        Positioned(
          bottom: 10.0,
          left: 0.0,
          right: 0.0,
          child: Row(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              for (var i = 0; i < widget.imageList.length; i++)
                AnimatedContainer(
                  duration: Duration(
                    milliseconds: 300,
                  ),
                  curve: Curves.easeOutCubic,
                  margin: EdgeInsets.symmetric(horizontal: 5.0),
                  width: _selectedPage == i ? 36.0 : 10.0,
                  height: 10.0,
                  decoration: BoxDecoration(
                    color: AppColors.primaryColor,
                    borderRadius: BorderRadius.circular(
                      12.0,
                    ),
                  ),
                )
            ],
          ),
        ),
      ]),
    );
  }
}
class ImageSwipe扩展StatefulWidget{
ImageSwipe({Key-Key,this.imageList}):super(Key:Key);
最终名单;
@凌驾
_ImageSwipeState createState()=>_ImageSwipeState();
}
类_ImageSwipeState扩展状态{
int _selectedPage=0;
@凌驾
小部件构建(构建上下文){
返回容器(
高度:400.0,
子:堆栈(
儿童:[
页面浏览(
onPageChanged:(值){
设置状态(){
_selectedPage=值;
});
},
儿童:[
对于(var i=0;i
我通过使用以下命令解决了类似的问题:

final backgroundImages = ['signin_background.png','limpieza.jpg',/*'medicina.jpg',*/'plomero.jpg','profesor.jpg','veterinario.jpg'];
然后将其包装在动画切换器中,如下所示:

  Stack(
  children: [
  AnimatedSwitcher(
    duration: Duration(milliseconds: 800),
    transitionBuilder: (Widget image, Animation<double> animation) {
    return FadeTransition(opacity: animation, child: image,);
    },
    child: Image.asset('assets/'+backgroundImages[pos],
      width: MediaQuery.of(context).size.width,
      key: ValueKey(pos),
      fit: BoxFit.fill,
    ),
  ),
堆栈(
儿童:[
动画切换器(
持续时间:持续时间(毫秒:800),
transitionBuilder:(小部件图像、动画){
返回FadeTransition(不透明度:动画,子对象:图像,);
},
子项:Image.asset('assets/'+backgroundImages[pos],
宽度:MediaQuery.of(context).size.width,
键:ValueKey(位置),
fit:BoxFit.fill,
),
),

因此,您必须首先从数据库中获取图像或将其存储在应用程序中。

很好!这成功了!我编辑了我的问题,以显示用于图像扫描的自定义dart文件。
final backgroundImages = ['signin_background.png','limpieza.jpg',/*'medicina.jpg',*/'plomero.jpg','profesor.jpg','veterinario.jpg'];
  Stack(
  children: [
  AnimatedSwitcher(
    duration: Duration(milliseconds: 800),
    transitionBuilder: (Widget image, Animation<double> animation) {
    return FadeTransition(opacity: animation, child: image,);
    },
    child: Image.asset('assets/'+backgroundImages[pos],
      width: MediaQuery.of(context).size.width,
      key: ValueKey(pos),
      fit: BoxFit.fill,
    ),
  ),