1

晚上好编码员,

我对 Dart 和 Rikulo_Ui 有一个严重的问题,更具体地说,问题只出现在 Rikulo_Ui 上。

我真的是所有 Dart 东西的新手,所以请保持温和,不要犹豫,询问更多信息。

我的问题是,一旦我尝试使用 Rikulo_ui 组件,我只会在浏览器中看到一个白屏,没有任何显示。真的没什么。调用 rikulo 部分之前的代码,但第一次调用 Rikulo 方法会导致白屏错误。所以对于这段代码:

import 'package:rikulo_ui/view.dart';
import 'dart:js' as js;
void main() {
  js.context.callMethod("alert",["Hello"]);
  final welcome = new TextView("Hello World!");
  welcome.profile.location = "center center";
  welcome.on.click.listen((event) {
    welcome.text = "Hi, this is Rikulo.";
    welcome.style.border = welcome.style.border.isEmpty ? "1px solid blue": "";
    welcome.requestLayout(); //need to re-layout since its size is changed
  });
  welcome.addToDocument();
}

警报被完美调用,但我只看到一个白屏。dartium 浏览器的开发者工具导致我出现以下异常:

package:rikulo_ui/src/view/view_impls.dart:26 Exception: No static getter 'browser' declared in class '_ViewImpl'.

NoSuchMethodError: method not found: 'browser'
Receiver: Type: class '_ViewImpl@107880211'
Arguments: [...]

我将 pub 与教程中的配置一起使用,并添加了依赖项 rikulo_ui 并使用了pub getand pub install.

应该显示我的代码的 HTML 文件如下所示:

<!DOCTYPE html>
<html>
<head>
    <title>Hello World!</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
    <link rel="stylesheet" type="text/css" href="packages/rikulo_ui/css/default/view.css" />
</head>
<body>
<script type="text/javascript" src="packages/browser/interop.js"></script>
<script type="application/dart" src="HelloWorld.dart"></script>
<script src="packages/browser/dart.js"></script>
</body>
</html>

从 Rikulo 端下载的示例以相同的错误退出。我真的无法使用任何 Rikulo 组件。我还确保 Dartium 和 Dart 都具有相同的版本(1.13.0)。

谢谢您的帮助!

问候,托斯滕

4

2 回答 2

2

请升级到最新的 Rikulo UI (0.8.0)。我修复了最新 SDK 的一些不兼容问题。

于 2015-11-25T03:46:39.610 回答
1

一些建议与您的问题相关的问题无关,但在尝试 Dart 时可以避免更多问题:

为了使所有工具正常工作,您应该坚持 Pub 包布局约定https://www.dartlang.org/tools/pub/package-layout.html

  • 在 GitHub 存储库中,该pubspec.yaml文件应位于顶层(无Dart子目录)。在这种情况下这无关紧要,但会阻止将存储库作为依赖项添加到pubspec.yaml. https://www.dartlang.org/tools/pub/dependencies.html#git-packages

  • 网页入口页面应该在web顶级目录中。这更重要。

  • 只是一个 Dart 风格指南建议:文件和包名中只使用小写和下划线。这可以确保一切都在所有操作系统上运行良好。

  • 添加具体的版本约束而不是noneor any。当发布的旧包本身没有适当的约束时,这通常会导致意外的旧包版本,如果由于不兼容的约束而与最近的包存在分辨率冲突,有时会发生这些旧版本被选中。

于 2015-11-24T12:55:55.560 回答