无法将FLUTTER参数分配给参数类型

时间:2020-04-17 22:01:24

标签: firebase flutter dart parameter-passing flutter-test

错误:无法将参数类型'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});

它在不同的页面上工作,但是在时间轴上,我不解释为什么它显示此错误。

Github Link

2 个答案:

答案 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,彻底清理干净,为了更好的衡量,我删除了一个抱怨的文件并重新创建它,我就像新的一样。