Flutter中ElevatedButton提示不是函数的命名冲突问题如何解决
问题修复方案
报错的核心原因是命名冲突:你项目内自定义的
ElevatedButton组件(位于package:fitnessapp/components/elevated_button.dart)和Flutter Material库内置的ElevatedButton重名,Dart无法识别你要调用的是哪一个。
方案1:为其中一个导入添加前缀(推荐,灵活性最高)
你可以给使用频率更低的那个导入语句加as关键字指定别名,避免冲突:
- 如果你常用官方的
ElevatedButton,就给自定义组件的导入加前缀:
把原来的导入语句
修改为import 'package:fitnessapp/components/elevated_button.dart';
之后如果要调用自定义的按钮,就写import 'package:fitnessapp/components/elevated_button.dart' as customBtn;customBtn.ElevatedButton,直接写ElevatedButton默认调用的就是官方组件。 - 如果你常用自己封装的
ElevatedButton,可以给官方Material库的导入加前缀:
之后调用官方组件就写import 'package:flutter/material.dart' as material;material.ElevatedButton,直接写ElevatedButton默认调用自定义组件。
方案2:导入时隐藏不需要的同名组件
如果你当前页面完全不需要用到其中一个ElevatedButton,可以在导入时直接隐藏该类:
- 如果你当前页面只用官方组件,就修改自定义组件的导入:
import 'package:fitnessapp/components/elevated_button.dart' hide ElevatedButton; - 如果你当前页面只用自定义组件,就修改官方库的导入:
import 'package:flutter/material.dart' hide ElevatedButton;
内容的提问来源于stack exchange,提问作者user16695845
相关产品推荐
相关产品推荐

