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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 04:00:06