2

如何在 Dart 中使用 window.matchMedia?

我找到了相应的方法:

MediaQueryList matchMedia(String query)

和“MediaQueryList”方法:

void addListener(MediaQueryListListener listener)

但是:MediaQueryListListener没有构造函数,看起来像是某种生成的存根。

我有JS 例子

var mq = window.matchMedia( "(min-width: 500px)" );

// media query event handler
if (matchMedia) {
    var mq = window.matchMedia("(min-width: 500px)");
    mq.addListener(WidthChange);
    WidthChange(mq);
}

// media query change
function WidthChange(mq) {

    if (mq.matches) {
        // window width is at least 500px
    }
    else {
        // window width is less than 500px
    }

}

它有很好的支持http://caniuse.com/#feat=matchmedia

4

1 回答 1

3

正如评论中指出的那样,它目前似乎没有在 Dart 中实现。

但是,您可以使用dart:js来执行此操作:

import 'dart:js';

main() {
  if (context['matchMedia'] != null) {
    final mq = context.callMethod('matchMedia', ['(min-width: 500px)']);
    mq.callMethod('addListener', [widthChange]);
    widthChange(mq);
  }
}
widthChange(mq) {
  if (mq['matches']) {
    print('window width is at least 500px');
  } else {
    print('window width is less than 500px');
  }
}
于 2013-11-03T20:14:21.327 回答