Flutter集成Google Pay按钮遇Failed to Inflate ColorStateList错误求助
Flutter集成Google Pay按钮兼容性问题(Pixel 7模拟器报错)
问题概述
在Flutter项目中集成Google Pay按钮时,已完成主题定义、依赖添加及Android环境更新,但打开含Google Pay按钮的页面时,出现Failed to Inflate ColorStateList及AppCompat主题兼容相关错误。该问题仅出现在Pixel 7模拟器,Pixel 8模拟器可正常运行。
可能的原因及解决建议
1. 统一Android API级别配置
Pixel 7与Pixel 8模拟器默认API级别存在差异(通常Pixel 7为API 33,Pixel 8为API 34),Google Pay组件对低API级别有特定兼容要求:
- 打开
android/app/build.gradle,将compileSdkVersion、targetSdkVersion统一设置为34或更高版本 - 确认
minSdkVersion不低于21(Google Pay官方最低SDK要求)
2. 修正AppCompat主题配置
错误提示指向主题兼容问题,需确保App主题符合Material Components规范:
- 打开
android/app/src/main/res/values/styles.xml,将主题继承自Theme.MaterialComponents.DayNight.NoActionBar(Google Pay推荐使用Material Components主题) - 移除主题中硬编码的按钮颜色属性(如
colorButtonNormal),改用colorPrimary等主题默认属性,或使用兼容的ColorStateList资源 - 检查版本特定资源目录(如
res/values-v31),确保低版本目录(res/values)中有对应的 fallback 颜色配置
3. 更新Google Pay相关依赖
依赖版本不兼容可能导致跨API级别问题:
- 在
pubspec.yaml中更新Google Pay相关依赖(如pay或google_pay包)至最新稳定版,示例:dependencies: pay: ^1.1.0 # 替换为实际最新版本 - 执行缓存清理命令:
flutter clean && flutter pub get,重新运行项目
4. 修复ColorStateList资源格式
Failed to Inflate ColorStateList通常源于资源定义不符合低API级别要求:
- 检查项目中所有
color.xml文件,确保ColorStateList定义符合官方规范,示例:<selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:color="@color/primary" android:state_enabled="true"/> <item android:color="@color/primary_disabled" android:state_enabled="false"/> </selector> - 低API级别(低于24)避免使用
android:alpha属性,改用半透明颜色值(如#80FFFFFF)
5. 重置Pixel 7模拟器环境
模拟器缓存或系统镜像问题可能导致异常:
- 在模拟器中进入「设置」-「应用」-找到目标App-「存储」-清除缓存及数据
- 重新创建Pixel 7模拟器,选择最新的Google Play系统镜像,而非纯Android镜像
内容的提问来源于stack exchange,提问作者cealex
相关产品推荐
相关产品推荐

