You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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稳定版本:

  1. 打开pubspec.yaml,把flutter_advanced_networkimage_2: ^2.0.1改成flutter_advanced_networkimage_2: ^1.0.19
  2. 运行命令flutter pub get更新依赖
  3. 重新运行项目,检查错误是否消失

解决方案二:替换为更稳定的图片加载库

如果降级后还是有问题,建议换成维护更活跃、兼容性更好的图片加载库,比如cached_network_image:

  1. 在pubspec.yaml中注释掉flutter_advanced_networkimage_2的依赖,添加:
    cached_network_image: ^3.2.3
    
  2. 运行flutter pub get
  3. 替换代码中使用AdvancedNetworkImage的地方,比如:
    原来的代码:
    Image(image: AdvancedNetworkImage('your_image_url'))
    
    替换为:
    CachedNetworkImage(imageUrl: 'your_image_url')
    
  4. 重新编译运行项目

解决方案三:手动修复依赖包中的类型问题(不推荐)

如果你一定要使用原包,可以尝试手动修改依赖包的代码:

  1. 找到本地依赖包的位置(一般在flutter/.pub-cache/hosted/pub.dev/flutter_advanced_networkimage_2-2.0.1/lib/src/目录下)
  2. 打开出错的文件,把DecoderCallback替换成ImageDecoderCallback(Flutter 2.10+之后该类型被重命名)
  3. 确保导入了正确的头文件import 'package:flutter/painting.dart';
  4. 重新运行项目

备注:内容来源于stack exchange,提问作者Anurup Reddy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 12:59:51