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,
),
),