Flutter开发报错'ChangeNotifierProvider' isn't a function 排查求助
问题场景
开发拼写类应用时,运行如下代码触发报错,未定位到代码编写问题:
void main() { runApp(ChangeNotifierProvider(create: (_) => Controller(), child: MyApp())); }
控制台抛出的错误原文为'ChangeNotifierProvider' isn't a function.,翻译为:'ChangeNotifierProvider' 不是一个函数。
触发原因
- 未在项目中正确引入
provider状态管理包,或是当前代码文件缺失对应包的导入语句,编译器无法识别ChangeNotifierProvider的构造方法,将其判定为未定义的普通标识符,最终抛出该错误。 - 存在标识符命名冲突:当前文件自定义了同名的类、变量或函数,或是导入的其他第三方库导出了同名的
ChangeNotifierProvider,导致标识符指向错误。
修复方案
- 打开项目根目录下的
pubspec.yaml文件,在dependencies节点下添加provider依赖:
dependencies: flutter: sdk: flutter provider: ^6.1.1 # 可替换为当前最新的稳定版本
- 在项目根目录执行依赖拉取命令:
flutter pub get
- 在编写main方法的dart文件顶部,补充provider包的导入语句:
import 'package:provider/provider.dart';
- 完成上述操作后如果仍报错,检查当前文件是否存在同名自定义标识符,或是其他库的同名导出冲突,存在冲突时可通过导入时加
hide关键字屏蔽冲突项即可。
内容的提问来源于stack exchange,提问作者Perpetually Curious
相关产品推荐
相关产品推荐

