错误:无法将参数类型'User(其中<dir>\<project>\lib\pages\home.dart)'
中定义了User)分配给参数类型'User(其中<dir>\<project>\lib\pages\timeline.dart)'.
中定义了User的参数)
代码:home.dart
Scaffold buildAuthScreen() {
return Scaffold(
key: _scaffoldKey,
body: PageView(
children: <Widget>[
Timeline(currentUser: currentUser),
ActivityFeed(),
Upload(currentUser: currentUser),
Search(),
Profile(profileId: currentUser?.id),
代码:timeline.dart
class Timeline extends StatefulWidget {
final User currentUser;
Timeline({this.currentUser});
它在不同的页面上工作,但是在时间轴上,我不解释为什么它显示此错误。
答案 0 :(得分:1)
您在两个不同的文件中有两个分别名为User
的类。即使它们具有相同的类名,也可以是不同的类(即使它们具有相同的实现)。
如果它们确实应该是单独的类,则应考虑将它们重命名为不同的类。如果无法实现,则可以在导入时通过specifying a library prefix消除它们的歧义:
import 'timeline.dart' as timeline;
然后,您可以使用timeline.User
来专门指代timeline.dart
的版本。
答案 1 :(得分:0)
我遇到了同样的问题。为我解决的是遍历每个文件并确保我使用相同类型的本地导入(相对文件列表与包)IE:
import './local/file.dart';
import 'package:local_package/local/file.dart';
我还必须仔细检查所有导入的区分大小写。我通过重命名和改组发现 case 与文件系统实际拥有的 I.E. 不匹配:
import './local/file.dart'
Filesytem:
.../project/lib/Local/file.dart (Notice the capital L in "Local"
再加上删除我的主目录中的 .dartServer,彻底清理干净,为了更好的衡量,我删除了一个抱怨的文件并重新创建它,我就像新的一样。