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

Flutter集成flutter_stripe支付时同一页面使用Card组件报错

错误原因

你遇到的是Dart编译期的命名冲突问题,原始错误信息如下:

"The name 'Card' is defined in the libraries 'package:flutter/src/material/card.dart (via package:flutter/material.dart)' and 'package:stripe_platform_interface/src/models/payment_methods.dart'.
Try using 'as prefix' for one of the import directives, or hiding the name from all but one of the imports."

错误翻译:

名称Card同时在 package:flutter/src/material/card.dart(通过package:flutter/material.dart导入) 和 package:stripe_platform_interface/src/models/payment_methods.dart 两个库中定义。
请尝试为其中一个导入指令使用as 前缀的写法,或者从除一个导入之外的所有导入中隐藏该名称。

触发原因是当前页面同时导入了flutter/material.dart和Stripe相关依赖库,两个库都对外暴露了名为Card的类,编译器无法判断你调用Card时指向的是哪个库的实现。

修复方案

可根据你的实际使用场景选择对应方案:

  • 方案1:为其中一个导入声明添加前缀
    如果你当前页面需要同时使用两个库的Card类,就给其中一个导入加前缀区分,示例如下:
    给Stripe相关导入加stripe前缀:
// 修改导入语句,添加as关键字声明前缀
import 'package:flutter/material.dart';
import 'package:stripe_platform_interface/stripe_platform_interface.dart' as stripe;

使用时按前缀区分即可:

  • 调用Material的卡片组件:直接写Card
  • 调用Stripe的Card支付方法类:写stripe.Card
  • 方案2:隐藏不需要用到的Card类
    如果你当前页面只需要用到其中一个库的Card,可以直接从另一个库的导入里隐藏Card类:
    仅使用Material的Card组件,不需要用到Stripe的Card类:
import 'package:flutter/material.dart';
// 从stripe导入中隐藏Card类
import 'package:stripe_platform_interface/stripe_platform_interface.dart' hide Card;

仅使用Stripe的Card类,不需要用到Material的Card组件:

// 从material导入中隐藏Card类
import 'package:flutter/material.dart' hide Card;
import 'package:stripe_platform_interface/stripe_platform_interface.dart';

内容的提问来源于stack exchange,提问作者Muhammad Umair Saqib

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 15:00:04