Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
内部错误:。。。模棱两可的引用:';数据网格&x27;在库web/DataGrid.dart和web/out/DataGrid.dart中定义_Dart_Dart Webui - Fatal编程技术网

内部错误:。。。模棱两可的引用:';数据网格&x27;在库web/DataGrid.dart和web/out/DataGrid.dart中定义

内部错误:。。。模棱两可的引用:';数据网格&x27;在库web/DataGrid.dart和web/out/DataGrid.dart中定义,dart,dart-webui,Dart,Dart Webui,我使用WebUI创建了一个简单的数据网格进行测试,并且工作正常。然后我决定尝试将其声明为组件。我更改了库引用,现在当我尝试运行应用程序时,它给了我上述错误。您可以在下面看到我的文件结构。当我试图运行它时,我得到“模棱两可引用”消息的原因是,当我进入out目录中的自动生成的DataGrid.dart文件时,它有以下声明 import 'DataGrid.dart'; ... import '../DataGrid.dart'; 我不明白为什么生成的代码会同时导入它们。我考虑的一件事是,这可能是因

我使用WebUI创建了一个简单的数据网格进行测试,并且工作正常。然后我决定尝试将其声明为组件。我更改了库引用,现在当我尝试运行应用程序时,它给了我上述错误。您可以在下面看到我的文件结构。当我试图运行它时,我得到“模棱两可引用”消息的原因是,当我进入out目录中的自动生成的DataGrid.dart文件时,它有以下声明

import 'DataGrid.dart';
...
import '../DataGrid.dart';
我不明白为什么生成的代码会同时导入它们。我考虑的一件事是,这可能是因为DataGridPage.html文件实例化了我的DataGrid组件,而DataGridPage.dart文件导入了DataGrid.dart,以便它可以引用DataGridColumn(它需要为DataGrid设置列)。在DataGridPage.dart中,我还附加到某些DataGrid事件,如SortColumnChanged和SelectionChanged,因此我需要在DataGridPage.dart中请求DataGrid实例的副本(我认为没有办法附加到DataGridPage.html中web组件实例化的事件)

你知道我做错了什么吗

以下是我的文件结构:

DataGrid.dart
--------------------------------------------
library datagrid;
...
part 'DataGridColumn.dart';
part 'DataGridRow.dart';
class DataGrid extends WebComponent{...}    

DataGridRow.dart
--------------------------------------------
part of datagrid;
class DataGridRow {...}

DataGridColumn.dart
--------------------------------------------
part of datagrid;
class DataGridColumn {...}

DataGrid.html
--------------------------------------------
[contains the component declaration UI]

DataGridPage.html
-----------------------------------------
...
<div is="s-datagrid" id="myDataGrid" ItemsSource="{{app.Assets}}" Columns="{{app.Columns}}"></div>
...

DataGridPage.dart
--------------------------------------------
import 'DataGrid.dart';
import 'Asset.dart';
void main() {
}
DataGridApp _app;
DataGridApp get app {
  if (_app == null) {
    _app = new DataGridApp();
  }
  return _app;
}
class DataGridApp{
//provides ItemsSource and DataGridColumn data
}
DataGrid.dart
--------------------------------------------
图书馆数据网格;
...
“DataGridColumn.dart”部分;
“DataGridRow.dart”部分;
类DataGrid扩展WebComponent{…}
DataGridRow.dart
--------------------------------------------
数据网格的一部分;
类DataGridRow{…}
DataGridColumn.dart
--------------------------------------------
数据网格的一部分;
类DataGridColumn{…}
DataGrid.html
--------------------------------------------
[包含组件声明UI]
DataGridPage.html
-----------------------------------------
...
...
DataGridPage.dart
--------------------------------------------
导入“DataGrid.dart”;
导入“Asset.dart”;
void main(){
}
DataGridApp\u应用程序;
DataGridApp获取应用程序{
如果(_app==null){
_app=新建DataGridApp();
}
返回应用程序;
}
类DataGridApp{
//提供ItemsSource和DataGridColumn数据
}

JMessery在github网站上回答了这个问题。他说您需要删除主dart文件中的组件导入。因此,在我的示例中,我将从DataGridPage.dart中删除import'DataGrid.dart'语句。IDE会给你一个警告,但是你可以忽略它,因为它实际上是从out文件夹运行的


jmesserly在github网站上回答了这个问题。他说您需要删除主dart文件中的组件导入。因此,在我的示例中,我将从DataGridPage.dart中删除import'DataGrid.dart'语句。IDE会给你一个警告,但是你可以忽略它,因为它实际上是从out文件夹运行的


我用默认的“Web UI应用程序”xclickcounter验证了相同的行为。如果尝试在主dart文件中导入“xclickcounter.dart”,则在运行它时会显示相同的错误消息。我使用默认的“Web UI应用程序”xclickcounter验证了相同的行为。如果尝试在主dart文件中导入'xclickcounter.dart',则在运行该文件时会显示相同的错误消息。