dart - 如何使用工具栏按钮切换抽屉面板的主抽屉

标签 dart dart-polymer material-design paper-elements core-elements

我试图听一下工具栏上的按钮单击,单击该按钮时会切换抽屉式主面板的主抽屉,但效果不佳。

代码如下所示-方法void menu_icon_handler()中的代码不正确。

    <!DOCTYPE html>
    <link rel="import" href="../../../packages/polymer/polymer.html">
    <link rel="import" href="../../../packages/core_elements/core_drawer_panel.html">
    <link rel="import" href="../../../packages/core_elements/core_icon_button.html">
    <link rel="import" href="../../../packages/core_elements/core_toolbar.html">
    <link rel="import" href="../../../packages/paper_elements/roboto.html">
    <link rel="import" href="../../../packages/core_elements/core_toolbar.html">
    <link rel="import" href="../../../packages/paper_elements/paper_icon_button.html">
    <link rel="import" href="./reg/registrant-view.html">
    <link rel="import" href="./reg/patient-view.html">
    <link rel="import" href="drawer-form.html">

    <polymer-element name="main-form">

      <template>
        <core-drawer-panel id="core_drawer_panel">
          <section id="drawer" drawer>
            <drawer-form on-new-patient-event='{{newPatientHandler}}'></drawer-form>
          </section>

          <section id="main" main>
            <core-toolbar id="core_toolbar">
              <paper-icon-button
                icon="menu"
                id='menu_icon'
                on-click='{{menu_icon_handler}}'></paper-icon-button>
              <div id="div" flex>Toolbar</div>
            </core-toolbar>

            <section id='new-patient'>

            </section>

          </section>
        </core-drawer-panel>

      </template>

      <script type="application/dart">

        import 'package:polymer/polymer.dart';
        import 'dart:html';

        import 'package:core_elements/core_drawer_panel.dart';

        @CustomTag( 'main-form' )
        class MainForm extends PolymerElement
        {
          CoreDrawerPanel drawerPanel;

          MainForm.created() : super.created();

          void toggleDrawer()
          {
            bool state = drawerPanel.narrow;
          }

          void menu_icon_handler()
          {
            bool state =  drawerPanel.narrow;

            print ( state );
          }

          @override
          void attached()
          {
             super.attached();

             drawerPanel = $['drawerPanel']  as CoreDrawerPanel;
          }
        }
      </script>
    </polymer-element>

单击工具栏按钮时,我得到以下堆栈跟踪

异常(exception):空对象没有getter'narrow'。

NoSuchMethodError: method not found: 'narrow'
Receiver: null

我看到null,看着docs'narrow'是CoreDrawerPanel的属性

最佳答案

您通过以下方式查找元素

drawerPanel = $['drawerPanel']  as CoreDrawerPanel;

但您的HTML不包含ID为drawerPanel的元素,但是您有ID为core_drawer_panel的元素

更改此行中的id应该可以解决问题

drawerPanel = $['core_drawer_panel']  as CoreDrawerPanel;

关于dart - 如何使用工具栏按钮切换抽屉面板的主抽屉,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25048378/

相关文章:

flutter - 下拉按钮未在 Flutter 中显示所选值

dart - 在 Flutter 中使用 iOS 行为时更改 ListView 反弹颜色

dart - 用换行符绑定(bind)文本

html - md-select - 如何强制要求?

android - 如何实现 Material 指南中描述的全屏对话框?

Flutter - 主动检查是否按下了特殊键(如 ctrl)

mobile - Flutter Tabs 抛出空指针异常 -> Material.of(context).color 计算为 null

dart - 自动调整 Canvas 大小以占用其容器的全部大小

dart - 带有 dart 和 polymer 的图形库

Android Material Design 个人资料页面