程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了无法将参数类型“List<ImageModel>”分配给参数类型“ImageModel”大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决无法将参数类型“List<ImageModel>”分配给参数类型“ImageModel”?

开发过程中遇到无法将参数类型“List<ImageModel>”分配给参数类型“ImageModel”的问题如何解决?下面主要结合日常开发的经验,给出你关于无法将参数类型“List<ImageModel>”分配给参数类型“ImageModel”的解决方法建议,希望对你解决无法将参数类型“List<ImageModel>”分配给参数类型“ImageModel”有所启发或帮助;

我通过Flutter的语言创建了一个应用来展示幻灯片。通过显示的图片,我尝试让用户点击图片并移动到下一页并获取图片ID。

我创建了以下代码来做到这一点,但我面临以下问题:

The argument type 'List<ImageModel>' can't be assigned to the parameter type 'ImageModel'.





class Demo extends StatefulWidget {
  @overrIDe
  _HomePageState createState() => _HomePageState();
}

class _HomePageState extends State<Demo> {

bool lodaing=true;
List<ImageModel> imageModel  ;
  List data;
  Future GetAllcategory()async{
    var response=await http.get("https://****************.PHP",headers: {"Accept": "application/Json"}
    );
    var JsoBody = response.body;
    var JsoData =Json.decode(JsoBody);
    setState(() {
      data= JsoData;
      lodaing=false;
    });
      print('show all data $JsoData');
  }
@overrIDe
  voID initState() {
    // Todo: implement initState
    super.initState();

    GetAllcategory();
  }

var getID;

voID _gotoSingleImage(ImageModel imageModel,BuildContext context) {
  Navigator.push(
    context,MaterialPageRoute(builder: (context) => SingleImage(imageModel)),);
}


  @overrIDe
  Widget build(BuildContext context) {


    return Scaffold(
      body:lodaing?   CircularProgressIndicator() :

      GestureDetector(

        child:

        Center(
        child: SizedBox(
          height: 150.0,wIDth: 300.0,child: InkWell(
            onTap: () {

              _gotoSingleImage( imageModel,context);

            },child: Carousel(

      
              BoxFit: BoxFit.cover,autoplay: true,dotSize: 4.0,dotSpacing: 15.0,dotcolor: colors.lightGreenAccent,indicatorBgpadding: 5.0,dotBgcolor: colors.purple.withOpacity(0.5),borderRadius: true,images:

              data  .map(
                    (List) {
              
                        return Image.network(List['image']

                        );
                        },)
                  .toList(),),)




    );
  }
}

class SingleImage extends StatefulWidget {
  final ImageModel imageModel;
  SingleImage(this.imageModel);

  @overrIDe
  _SingleImageState createState() => _SingleImageState();
}

class _SingleImageState extends State<SingleImage> {

  @overrIDe
  voID initState() {
    // Todo: implement initState
    super.initState();

    print(Widget.imageModel);
  }

  @overrIDe
  Widget build(BuildContext context) {
    return Scaffold(
        appbar: Appbar(
          Title: Text('ImageScreen'),body: Center(
          //  print(Widget.getID.toString());
        ));
  }
}


class ImageModel {
  int ID;
  String src;

  ImageModel({
    this.ID,this.src,});

  factory ImageModel.fromJson(Map<String,dynamic> Json) => ImageModel(
    ID: Json["ID"],src: Json["src"],);

  Map<String,dynamic> toJson() => {
    "ID": ID,"src": src,};
}

class ImageUrl {
  ImageUrl({
    this.ID,this.name,this.alt,});

  int ID;
  String src;
  String name;
  String alt;

  factory ImageUrl.fromJson(Map<String,dynamic> Json) => ImageUrl(
    ID: Json["ID"],name: Json["name"],alt: Json["alt"],"name": name,"alt": alt,};
}



我收到以下错误:


onTap: () {

              _gotoSingleImage( imageModel,

一张更能说明问题的图:

enter image description here

谁能帮我解决这个问题。

谢谢。

解决方法

_gotoSingleImage 采用 ImageModel 的实例和上下文。但是,您可以使用声明为 imageModel 的变量 List<ImageModel> 来调用它。那行不通。因此,您必须更改 imageModel 的类型或相应地修改方法 _gotoSingleImage

旁注:这不是 Flutter 或 Dart(您正在编写的语言)所特有的,因此我建议您让自己熟悉函数和方法的一般工作原理。无论您使用哪种语言,您都需要掌握这些基本知识。

,

你做错了!首先,您将 ListimageModel 放在应该只是一个的位置,您可以尝试执行以下操作:

注意:我已经尝试过使用 carousel_Slider 包,因为这是我所拥有的

 child: CarouselSlider(
          items: data.map((i) {
            return Builder(
              builder: (BuildContext context) {
                return Container(
                    width: MediaQuery.of(context).size.width,decoration: BoxDecoration(color: Colors.red),child: GestureDetector(
                        child: Image.network(i,fit: BoxFit.fill),onTap: () {
                         _gotoSingleImage( i,context);

                            ),);
                        }));
              },);
          }).toList(),));


大佬总结

以上是大佬教程为你收集整理的无法将参数类型“List<ImageModel>”分配给参数类型“ImageModel”全部内容,希望文章能够帮你解决无法将参数类型“List<ImageModel>”分配给参数类型“ImageModel”所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: