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

Flutter安装provider ^3.1.0版本后运行出现inheritFromElement等方法缺失报错

报错信息

/C:/Users/Praveen/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/provider-3.2.0/lib/src/delegate_widget.dart:194:18: Error: Superclass has no method named 'inheritFromElement'.
return super.inheritFromElement(ancestor, aspect: aspect);
^^^^^^^^^^^^^^^^^^
/C:/Users/Praveen/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/provider-3.2.0/lib/src/provider.dart:259:19: Error: The method 'inheritFromWidgetOfExactType' isn't defined for the class 'BuildContext'.

  • 'BuildContext' is from 'package:flutter/src/widgets/framework.dart' ('/D:/src/flutter/packages/flutter/lib/src/widgets/framework.dart').
    请尝试将名称更正为现有方法的名称,或定义一个名为inheritFromWidgetOfExactType的方法。
    ? context.inheritFromWidgetOfExactType(type) as InheritedProvider
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    /C:/Users/Praveen/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/provider-3.2.0/lib/src/provider.dart:260:19: Error: The method 'ancestorInheritedElementForWidgetOfExactType' isn't defined for the class 'BuildContext'.
  • 'BuildContext' is from 'package:flutter/src/widgets/framework.dart' ('/D:/src/flutter/packages/flutter/lib/src/widgets/framework.dart').
    请尝试将名称更正为现有方法的名称,或定义一个名为ancestorInheritedElementForWidgetOfExactType的方法。
    : context.ancestorInheritedElementForWidgetOfExactType(type)?.widget
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    FAILURE: 构建因异常失败。
  • 错误位置:
    脚本 'D:\src\flutter\packages\flutter_tools\gradle\flutter.gradle' 第1035行
  • 错误原因:
    执行task ':app:compileFlutterBuildDebug'失败。

进程'command 'D:\src\flutter\bin\flutter.bat''执行结束,返回非零退出值1

  • 解决方案尝试:
    添加--stacktrace参数运行可获取堆栈跟踪,添加--info或--debug参数运行可获取更多日志输出,添加--scan参数运行可获取完整洞察信息。
    构建在23秒后失败
    异常:Gradle任务assembleDebug执行失败,退出码为1
报错根因
  • 该错误为低版本provider与高版本Flutter SDK不兼容导致:provider 3.x版本使用的inheritFromWidgetOfExactType、ancestorInheritedElementForWidgetOfExactType、inheritFromElement方法在Flutter 1.13及以上版本中已被正式移除,替换为新的InheritedWidget相关API。
  • 你在pubspec中声明的是provider 3.1.0版本,但实际拉取到的兼容最高小版本为3.2.0,两个版本都存在相同的适配问题。
解决方案

方案1(推荐):升级provider版本

直接升级provider到4.0及以上的兼容版本,在pubspec.yaml中修改依赖配置:

dependencies:
  flutter:
    sdk: flutter
  # 替换原有3.x版本声明,推荐使用4.3.3及以上稳定兼容版本
  provider: ^4.3.3

修改完成后执行命令flutter pub get重新拉取依赖即可解决问题。

方案2(不推荐):降级Flutter SDK

如果项目必须使用3.x版本的provider,可将Flutter SDK降级到1.12.x及以下版本。

方案3(临时修复):手动修改缓存源码

仅适合临时调试使用,清理pub缓存后修改会失效:

  1. 打开报错对应的provider源码文件:/C:/Users/Praveen/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/provider-3.2.0/lib/src/provider.dart
  2. 将第259行的context.inheritFromWidgetOfExactType(type) as InheritedProvider替换为context.dependOnInheritedWidgetOfExactType<InheritedProvider>()
  3. 将第260行的context.ancestorInheritedElementForWidgetOfExactType(type)?.widget替换为context.getElementForInheritedWidgetOfExactType<InheritedProvider>()?.widget
  4. 打开同目录下的delegate_widget.dart,将第194行的super.inheritFromElement(ancestor, aspect: aspect)替换为super.dependOnInheritedElement(ancestor, aspect: aspect)

内容的提问来源于stack exchange,提问作者Praveen Ezekiel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 21:24:04