Flutter报错:参数类型‘Object’无法分配给‘ImageProvider?’求解决
解决Flutter中
Object无法赋值给ImageProvider?的类型错误 这个错误的核心原因是:Dart的类型推断机制会把FileImage和NetworkImage的公共父类判定为Object,而非它们共同的抽象父类ImageProvider,导致类型不兼容。
以下几种简洁的解决方法:
方法一:给三目表达式显式转类型
直接给整个三目表达式加上括号并转换为ImageProvider类型:
File?_image; CircleAvatar( radius: 70, backgroundImage: (_image != null ? FileImage(_image!.absolute) : NetworkImage(snapshot.data!.docs[index]["imageurl"])) as ImageProvider, ),
方法二:提前声明变量指定类型
把图片提供者逻辑抽离为单独变量,明确指定ImageProvider类型,可读性更强:
File?_image; final ImageProvider avatarImage = _image != null ? FileImage(_image!.absolute) : NetworkImage(snapshot.data!.docs[index]["imageurl"]) as ImageProvider; CircleAvatar( radius: 70, backgroundImage: avatarImage, ),
方法三:指定泛型类型(更严谨)
因为FileImage和NetworkImage的泛型参数默认是Object,也可以直接指定为ImageProvider<Object>:
File?_image; CircleAvatar( radius: 70, backgroundImage: _image != null ? FileImage(_image!.absolute) : NetworkImage(snapshot.data!.docs[index]["imageurl"]) as ImageProvider<Object>, ),
以上任意一种写法都能让Dart正确识别类型,解决赋值报错问题。
内容的提问来源于stack exchange,提问作者Muhammad Zohaib
相关产品推荐
相关产品推荐

