从api获取图像以及如何在颤动中设置每个图像的动态高度?

问题描述

我通过API从后端获取图像,但是Flutter必须在容器中设置约束,但是图像高度不一样,该怎么办?

抖动图像问题:

import 'package:cached_network_image/cached_network_image.dart';
import 'package:Flutter/cupertino.dart';
import 'package:Flutter/material.dart';
import 'package:Flutter_swiper/Flutter_swiper.dart';
import 'package:Flutter_use_redux/component/pureProduct.dart';
import 'package:Flutter_use_redux/models/product.dart';
import 'package:Flutter_use_redux/reselect/reselectHome.dart';
import 'package:oktoast/oktoast.dart';

/// 首页轮播组件编写
class SwiperDiy extends StatelessWidget {
  final List swiperDataList;
  final String imageHost;
  final bool autoplay;

  SwiperDiy({Key key,this.swiperDataList,this.imageHost,this.autoplay}) : super(key: key);

  @override
  Widget build(BuildContext context) {
   Map swiperData= reselectSwiper(swiperDataList);
   List realSwiperData=swiperData['list'];
  
    return Container(
         constraints:
          BoxConstraints(
           maxHeight:550
         ),child:  Swiper(
      scrollDirection: Axis.horizontal,itemBuilder: (BuildContext context,int index) {
        Map product=realSwiperData[index];
        return InkWell(
    onTap: () {
      print('/collections/${product['link']}');
    },child: CachednetworkImage(imageUrl:imageHost+product['href'],fit: BoxFit.fill,),);
      },itemCount: realSwiperData?.length,//pagination: new SwiperPagination(),autoplay: realSwiperData.length>1,viewportFraction:1,// 当前视窗展示比例 小于1可见上一个和下一个视窗
      scale: 1,);
  }
}

这是我的代码。但是maxHeight不适合我的想法:

enter image description here

例如,图像来自网络,有时它的高度可能是300,有时它的高度可能是400,我只想让滑动器拉伸容器。

解决方法

使用height的{​​{1}}和width构造函数

Container