开发App Gallery时遭遇Flutter依赖包编译错误求助
Flutter编译错误处理:间接依赖包兼容性问题
问题场景
开发App Gallery时触发编译失败,未直接引入screenshot和flutter_colorpicker包,但它们被项目其他依赖间接引用,具体报错如下:
/C:/Users/m3ada/AppData/Local/Pub/Cache/hosted/pub.dev/screenshot-2.3.0/lib/screenshot.dart:164:9: 错误:不存在名为'size'的命名参数。 size: logicalSize, ^^^^ /C:/src/flutter/packages/flutter/lib/src/rendering/view.dart:28:9: 上下文:找到该构造函数,但参数不匹配。 const ViewConfiguration({ ^^^^^^^^^^^^^^^^^ /C:/Users/m3ada/AppData/Local/Pub/Cache/hosted/pub.dev/flutter_colorpicker-1.0.3/lib/src/colorpicker.dart:659:53: 错误:类'TextTheme'没有定义'bodyText1' getter。 - 'TextTheme'来自'package:flutter/src/material/text_theme.dart' ('/C:/src/flutter/packages/flutter/lib/src/material/text_theme.dart')。 尝试将名称更正为现有getter的名称,或者定义名为'bodyText1'的getter或字段。 Theme.of(context).textTheme.bodyText1, ^^^^^^^^^ /C:/Users/m3ada/AppData/Local/Pub/Cache/hosted/pub.dev/flutter_colorpicker-1.0.3/lib/src/colorpicker.dart:669:53: 错误:类'TextTheme'没有定义'bodyText2' getter。 - 'TextTheme'来自'package:flutter/src/material/text_theme.dart' ('/C:/src/flutter/packages/flutter/lib/src/material/text_theme.dart')。 尝试将名称更正为现有getter的名称,或者定义名为'bodyText2'的getter或字段。 Theme.of(context).textTheme.bodyText2, ^^^^^^^^^ /C:/Users/m3ada/AppData/Local/Pub/Cache/hosted/pub.dev/flutter_colorpicker-1.0.3/lib/src/palette.dart:951:55: 错误:类'TextTheme'没有定义'bodyText1' getter。 - 'TextTheme'来自'package:flutter/src/material/text_theme.dart' ('/C:/src/flutter/packages/flutter/lib/src/material/text_theme.dart')。 尝试将名称更正为现有getter的名称,或者定义名为'bodyText1'的getter或字段。 Theme.of(context).textTheme.bodyText1, ^^^^^^^^^ /C:/Users/m3ada/AppData/Local/Pub/Cache/hosted/pub.dev/flutter_colorpicker-1.0.3/lib/src/palette.dart:960:57: 错误:类'TextTheme'没有定义'bodyText2' getter。 - 'TextTheme'来自'package:flutter/src/material/text_theme.dart' ('/C:/src/flutter/packages/flutter/lib/src/material/text_theme.dart')。 尝试将名称更正为现有getter的名称,或者定义名为'bodyText2'的getter或字段。 Theme.of(context).textTheme.bodyText2, ^^^^^^^^^ /C:/Users/m3ada/AppData/Local/Pub/Cache/hosted/pub.dev/flutter_colorpicker-1.0.3/lib/src/palette.dart:1042:58: 错误:类'TextTheme'没有定义'bodyText1' getter。 - 'TextTheme'来自'package:flutter/src/material/text_theme.dart' ('/C:/src/flutter/packages/flutter/lib/src/material/text_theme.dart')。 尝试将名称更正为现有getter的名称,或者定义名为'bodyText1'的getter或字段。 Text('Hex', style: Theme.of(context).textTheme.bodyText1), ^^^^^^^^^ /C:/Users/m3ada/AppData/Local/Pub/Cache/hosted/pub.dev/flutter_colorpicker-1.0.3/lib/src/palette.dart:1045:47: 错误:类'TextTheme'没有定义'bodyText2' getter。 - 'TextTheme'来自'package:flutter/src/material/text_theme.dart' ('/C:/src/flutter/packages/flutter/lib/src/material/text_theme.dart')。 尝试将名称更正为现有getter的名称,或者定义名为'bodyText2'的getter或字段。 width: (Theme.of(context).textTheme.bodyText2?.fontSize ?? 14) * 10, ^^^^^^^^^ Target kernel_snapshot failed: Exception FAILURE: 构建因异常失败。 * 出错原因: 任务':app:compileFlutterBuildDebug'执行失败。 > 进程'command 'C:\src\flutter\bin\flutter.bat''以非零退出值1结束。 * 尝试: > 使用--stacktrace选项获取堆栈跟踪。 > 使用--info或--debug选项获取更多日志输出。 > 使用--scan选项获取完整分析信息。 * 获取更多帮助:https://help.gradle.org BUILD FAILED in 13m 40s Error: Gradle任务assembleDebug失败,退出代码1
错误原因
- screenshot包版本兼容问题:
screenshot:2.3.0使用了Flutter已废弃的ViewConfiguration(size: ...)参数,新版Flutter中该构造函数已移除size参数。 - flutter_colorpicker包版本兼容问题:
flutter_colorpicker:1.0.3使用了Flutter Material库中已废弃的TextTheme.bodyText1/bodyText2属性,这些属性在新版Flutter中已被替换为bodyLarge/bodyMedium。
解决方法
方法一:强制升级依赖包到兼容版本
在项目的pubspec.yaml文件中添加dependency_overrides,强制使用这两个包的最新兼容版本:
dependency_overrides: screenshot: ^2.4.0 # 可替换为更高兼容版本 flutter_colorpicker: ^1.0.6 # 可替换为更高兼容版本
添加后执行命令更新依赖:
flutter pub get
方法二:更新间接依赖的源包
先执行命令查看哪个依赖引入了这两个旧版本包:
flutter pub deps
找到对应的上游依赖后,升级该依赖到最新版本,让它自动引入兼容的screenshot和flutter_colorpicker版本。
方法三:临时降级Flutter版本(不推荐)
如果暂时无法升级依赖,可以将Flutter降级到与旧版本包兼容的版本(如Flutter 3.0以下),但此方法会限制项目使用Flutter新特性,仅作为临时方案。
内容的提问来源于stack exchange,提问作者Mohamed Adan
相关产品推荐
相关产品推荐

