Dart / Flutter列表中的左侧,右侧编译器错误

时间:2018-08-13 08:03:04

标签: dart flutter

让我无法正常运行该程序。运行代码时,我总是遇到编译器问题。请参阅下面的详细信息。有人知道这是怎么回事吗?

我的代码从文件TapScreenToo.dart中提取:

import 'profiles.dart';
import 'package:flutter/material.dart';
import 'cards.dart';

class PageTapScreen extends StatefulWidget {
  final List<Profile> profileList;
  Key key;

  PageTapScreen({
    this.key,
    this.profileList,
  }) : super(key: key);    // constructor

  @override
  _PageTapScreenState createState() => new _PageTapScreenState();
}

文件profiles.dart中的配置文件类(那里没有导入语句):

class Profile {
  final String ttaKey;
  final String imageUrl;
  final String displayName;

  Profile({
    this.ttaKey,
    this.imageUrl,
    this.displayName,
  });
}

文件demoProfiles.dart中的我的个人资料列表:

import 'profiles.dart';

final List<Profile> demoProfiles = [
  new Profile(
    ttaKey: "0",
    imageUrl: 'http://localhost:8080/photo_0.jpg',
    displayName: 'abc',
    ),
  new Profile(
    ttaKey: "1",
    imageUrl: 'http:// ... etc
    ),
]

所有这些都在main.dart

中调用
import 'package:flutter/material.dart';
import 'tapScreenToo.dart';
import 'demoProfiles.dart';

class _MyHomePageState extends State<MyHomePage> {
  final Key keyOne = PageStorageKey('pageOne');

...
@override
  void initState() {
    tapScreen = PageTapScreen(
      key: keyOne,
      profileList:  demoProfiles,        <--- error points here
    );

启动时我收到编译器消息:

compiler message: lib/main.dart:68:20: Error: A value of type 'dart.core::List<#lib1::Profile>' can't be assigned to a variable of type 'dart.core::List<#lib2::Profile>'.  
compiler message: Try changing the type of the left hand side, or casting the right hand side to 'dart.core::List<#lib2::Profile>'. 
compiler message:       profileList: demoProfiles,`

我尝试投射(List <Profile>),但这似乎是失败的,或者我只是做错了。

注意:当我标记出错误行并调试到故障位置时,我可以看到keyOnedemoProfiles的值都与预期的一样。请注意,这些代码段位于通过import命令链接的不同文件中。

当我查看其余代码时,可以看到import 'profiles.dart'在哪里被多次调用。

我不明白该错误信息。我还研究了this posting with a similar error,,但我只是看不到这段代码在做什么,也不知道如何解决它。

1 个答案:

答案 0 :(得分:4)

您需要在main.dart中更改导入:

import 'tapScreenToo.dart';
import 'demoProfiles.dart';

由于main.dart只能包含packages:个导入,称为绝对导入。

因此将导入更改为:

import package:mypackage/path/tapScreenToo.dart
import package:mypackage/path/demoProfiles.dart

检查:

Error: A value of type 'List<#lib1::Data>' can't be assigned to a variable of type 'List<#lib2::Data>

https://github.com/dart-lang/sdk/issues/33076

https://www.dartlang.org/tools/pub/get-started#importing-libraries-from-packages