使用 CoreScaffold 和 CoreTabs 类 现在会导致异常

Using CoreScaffold and CoreTabs classes now causes Exception

我有一个名为 main-app 的聚合物元素:

    <link rel="import" href="../../packages/polymer/polymer.html">

    <link rel="import" href="../../packages/paper_elements/paper_input.html">
    <link rel="import" href="../../packages/paper_elements/paper_input.html">
    <link rel="import" href="../../packages/paper_elements/paper_tabs.html">
    <link rel="import" href="../../packages/paper_elements/paper_dialog.html">
    <link rel="import" href="../../packages/paper_elements/paper_icon_button.html">
    <link rel="import" href="../../packages/core_elements/core_toolbar.html">
    <link rel="import" href="../../packages/core_elements/core_scaffold.html">
    <link rel="import" href="../../packages/core_elements/core_header_panel.html">
    <link rel="import" href="../../packages/core_elements/core_menu.html">
    <link rel="import" href="../../packages/core_elements/core_item.html">
    <link rel="import" href="../../packages/paper_elements/paper_input.html">
    <link rel="import" href="../../packages/paper_elements/paper_button.html">
    <link rel="import" href="../../packages/paper_elements/paper_dialog.html">
    <link rel="import" href="../../packages/core_elements/core_scaffold.html">
    <link rel="import" href="../../packages/core_elements/core_pages.html">

    <polymer-element name="main-app" class="dark-primary-color">
        <template>
            <style type="text/css">
                :host {
                    display: block;
                }
            </style>
            <core-scaffold>

                <core-header-panel id="menu-panel" navigation flex>

                    <core-toolbar id="navheader">
                        <span>Menu</span>
                    </core-toolbar>
                    <core-menu>
                        <core-item label="Home" on-click="{{homeClicked}}"></core-item>
                        <core-item label="About Us" on-click="{{aboutClicked}}"></core-item>
                        <core-item label="Contact Us" on-click="{{contactClicked}}"></core-item>
                    </core-menu>
                </core-header-panel>

                <span tool>{{title}}</span>
                <paper-tabs class="main-menu bottom fit" selected="0">
                    <paper-tab on-click="{{homeClicked}}">Home</paper-tab>
                    <paper-tab on-click="{{aboutClicked}}">About Us</paper-tab>
                    <paper-tab on-click="{{contactClicked}}">Contact Us</paper-tab>
                </paper-tabs>
                <div class="content" forceNarrow>
                    <p>Lorem ipsum ...</p>
                </div>

                ...
            </core-scaffold>
        </template>
        <script type="application/dart" src="main-app.dart"></script>
    </polymer-element>

主要-app.dart:

import 'package:polymer/polymer.dart';
import 'util/util.dart';
import 'event/event.dart';

import 'dart:html';

import 'page/home-page.dart';
import 'page/about-page.dart';
import 'page/contact-page.dart';

@CustomTag('main-app')
class MainApp extends PolymerElement {

  @observable String page = "home";
  @observable String title = "Home";

  MainApp.created() : super.created();

  ...

  homeClicked(event, detail, target) {
    CoreScaffold e = shadowRoot.querySelector('core-scaffold');
    e.doSomething <<-- fails
    ...
  }

  ...

}

这是我遇到的异常:

Exception: 'package:falm/main-app.dart': malformed type: line 73 pos 5: type 'CoreScaffold' is not loaded
    CoreScaffold e = shadowRoot.querySelector('core-scaffold');
    ^
type 'CoreScaffold' is not a subtype of type 'malformed' of 'e'. 

要摆脱异常,我现在必须做:

  homeClicked(event, detail, target) {
    Element e = shadowRoot.querySelector('core-scaffold');
    e.doSomething <<-- works
    ...
  }

昨天早上 dart 更新之前失败的代码一直有效(不确定我从哪个版本更新,因为我在进行完整的 pub 升级、pub 缓存修复和 pub 下载之前完全重新安装了 SDK),PaperTabs 正在做同样的事情。

这是否意味着我不能再在我的 dart 代码中使用 CoreElement 和 PaperTabs 类?

更新:这里是来自pubspec.lock的相关点点滴滴:

core_elements:
    description: core_elements
    source: hosted
    version: "0.6.0+4"
paper_elements:
    description: paper_elements
    source: hosted
    version: "0.6.0+4"
  polymer:
    description: polymer
    source: hosted
    version: "0.15.5"
  polymer_expressions:
    description: polymer_expressions
    source: hosted
    version: "0.13.0+1"
  web_components:
    description: web_components
    source: hosted
    version: "0.10.1"

您需要导入定义了 class 的库。

import 'package:core_elements/core_scaffold.dart'; 
import 'package:paper_elements/paper_tabs.dart';

checked/unchecked

当您从命令行 运行 Dart 脚本时,默认是生产模式(未检查模式)。 dart bin/somescript.dart,或像 dart -c bin/somescript.dart 这样明确设置时的检查模式。

当您从 DartEditor 启动 Dart 脚本或网络应用程序时,默认为选中模式。 DartEditor 允许(取消)激活 Manage Launches(运行 配置)中的 Run in checked mode

我假设 Eclipse 的 Dart 插件 中有类似的设置(我自己不要使用它)。

WebStorm 允许在 Run > Edit Configurations ... 中为命令行应用程序设置它。对于 Web 应用程序,您可以创建新的浏览器配置并在 Command line options.

中添加 --checked

我认为它在 IntelliJ IDEA 中类似,但我自己还没有使用过它。

另见