Flutter运行至手机时出现'DecoderCallback isn't a type'错误求助
Flutter运行至手机时出现'DecoderCallback isn't a type'错误求助
我在尝试把Flutter代码运行到手机上时遇到了这个错误:
Error: 'DecoderCallback' isn't a type.
ImageStreamCompleter load(AdvancedNetworkImage key, DecoderCallback decode) {
这个错误来自依赖flutter_advanced_networkimage_2: ^2.0.1,我已经尝试过以下操作但都没解决:
- 检查依赖与Flutter的兼容性,确认显示兼容
- 更新其他依赖到新版本,但出现了更多兼容性冲突
- 从Flutter Master通道切换到Stable通道
我的Flutter SDK版本范围是sdk: ">=2.16.2 <3.0.0",完整的pubspec.yaml配置如下:
name: description: A new Flutter project. publish_to: "none" version: 12.0.0+1 environment: sdk: ">=2.16.2 <3.0.0" dependencies: flutter: sdk: flutter cupertino_icons: ^1.0.4 dartz: ^0.10.1 animated_text_kit: ^4.2.1 font_awesome_flutter: ^10.1.0 intl: ^0.18.1 pinput: ^3.0.1 flutter_svg: ^1.1.6 json_serializable: ^6.2.0 json_annotation: ^4.5.0 freezed_annotation: ^2.2.0 uuid: ^4.0.0 get_it: ^7.2.0 provider: ^6.0.2 permission_handler: ^11.0.0 encrypt: ^5.0.1 http: ^0.13.6 equatable: ^2.0.3 shared_preferences: ^2.0.15 image_picker: ^1.0.4 timeago: ^3.3.0 jiffy: ^6.2.1 google_fonts: ^4.0.4 from_css_color: ^2.0.0 simple_gradient_text: ^1.2.4 dynamic_height_grid_view: ^0.0.3 get: ^4.6.5 flutter_rating_bar: ^4.0.1 multiselect: ^0.1.0 multiselect_formfield: ^0.1.7 getwidget: ^4.0.0 dropdown_button2: ^2.0.0 custom_rating_bar: ^2.0.4 flutter_rating_native: ^0.0.2 flutter_launcher_icons: ^0.13.1 tuple: ^2.0.1 change_app_package_name: ^1.1.0 animated_splash_screen: ^1.3.0 custom_refresh_indicator: ^2.0.1 flutter_gif: ^0.0.4 url_launcher: ^6.1.10 firebase_dynamic_links: ^5.3.1 is_first_run: ^1.0.0 extended_nested_scroll_view: ^6.0.0 path: ^1.8.2 image_cropper: ^4.0.1 crop_image: ^1.0.5 hive: ^2.2.3 hive_flutter: ^1.1.0 multi_select_flutter: ^4.1.3 crop: ^0.5.5 flutter_advanced_networkimage_2: ^2.0.1 sqflite: ^2.2.8+3 path_provider: ^2.0.15 firebase_auth: ^4.6.1 google_sign_in: ^6.1.1 dev_dependencies: flutter_test: sdk: flutter freezed: ^2.3.2 flutter_lints: ^2.0.1 build_runner: ^2.1.10 flutter_icons: android: "launcher_icon" ios: true image_path: "assets/images/app_logo.png" flutter: uses-material-design: true assets: - assets/images/app_logo.svg - assets/images/app_logo.png - assets/images/mail.svg - assets/images/padlock.svg - assets/images/hide_1.svg - assets/images/google.svg - assets/images/facebook.svg - assets/images/Edit.svg - assets/images/Settings.svg - assets/images/Profile.svg - assets/images/Camera.svg - assets/images/back.svg - assets/images/Multiply.svg - assets/images/FourSquares.svg - assets/images/Bookmark.svg - assets/images/user.svg - assets/images/phone.svg - assets/images/dob.svg - assets/images/gender.svg - assets/images/left-arrow.svg - assets/images/Forward.svg - assets/images/delete.svg - assets/images/Cancel.svg - assets/images/newDelete.svg - assets/images/Ok.svg - assets/images/Right.svg - assets/images/Close.svg - assets/images/Home.svg - assets/images/addPost.svg - assets/images/Search.svg - assets/images/Profile_Icon.svg - assets/images/loader/logo.webp - assets/images/loader/indicators.webp - assets/images/hashtags.svg - assets/images/Customer.svg - assets/images/Rate.svg - assets/images/Like.svg - assets/images/Share.svg - assets/images/Comment.svg - assets/images/Eye.svg - assets/images/Heart.svg - assets/images/bell.svg - assets/images/new.svg - assets/images/support.svg - assets/images/Plus.svg - assets/images/Pen.svg - assets/images/trans_app_logo.png - assets/gif/splash_screen.gif fonts: - family: Recoleta Alt fonts: - asset: fonts/Recoleta Alt.ttf weight: 400 - family: AbhayaLibre-ExtraBold fonts: - asset: fonts/AbhayaLibre-ExtraBold.ttf weight: 800 - family: NotoEmoji fonts: - asset: fonts/NotoColorEmoji-Regular.ttf weight: 400
解决方案一:降级flutter_advanced_networkimage_2版本
这个错误的核心原因是DecoderCallback类型在你当前的Flutter SDK(2.16.x)中可能已经被调整,而flutter_advanced_networkimage_2: ^2.0.1版本适配的是更高版本的SDK。你可以尝试降级到该包的1.x稳定版本:
- 打开
pubspec.yaml,把flutter_advanced_networkimage_2: ^2.0.1改成flutter_advanced_networkimage_2: ^1.0.19 - 运行命令
flutter pub get更新依赖 - 重新运行项目,检查错误是否消失
解决方案二:替换为更稳定的图片加载库
如果降级后还是有问题,建议换成维护更活跃、兼容性更好的图片加载库,比如cached_network_image:
- 在
pubspec.yaml中注释掉flutter_advanced_networkimage_2的依赖,添加:cached_network_image: ^3.2.3 - 运行
flutter pub get - 替换代码中使用
AdvancedNetworkImage的地方,比如:
原来的代码:
替换为:Image(image: AdvancedNetworkImage('your_image_url'))CachedNetworkImage(imageUrl: 'your_image_url') - 重新编译运行项目
解决方案三:手动修复依赖包中的类型问题(不推荐)
如果你一定要使用原包,可以尝试手动修改依赖包的代码:
- 找到本地依赖包的位置(一般在
flutter/.pub-cache/hosted/pub.dev/flutter_advanced_networkimage_2-2.0.1/lib/src/目录下) - 打开出错的文件,把
DecoderCallback替换成ImageDecoderCallback(Flutter 2.10+之后该类型被重命名) - 确保导入了正确的头文件
import 'package:flutter/painting.dart'; - 重新运行项目
备注:内容来源于stack exchange,提问作者Anurup Reddy
相关产品推荐
相关产品推荐

