我们怎么知道屏幕在 Dart 中是可触摸的?
How can we know that the screen in touchable in Dart?
要开发响应式应用程序,我们需要知道用户是使用他的手指还是鼠标来调整应用程序的行为。例如,如果屏幕是可触摸的,按钮会更大...
我们可以通过监听Window.onTouch
事件和Window.onMouse
事件来猜测屏幕是否可触摸。
但我想在应用程序加载时知道它:在用户进行任何交互之前。
我该怎么做?
您可以使用 dart:js
并使用此答案中显示的方法
将此添加到您的 index.html
<script type="application/javascript">
function hasTouchSupport() {
return 'ontouchstart' in document.documentElement;
}
</script>
然后像
这样从 Dart 调用它
import 'dart:html';
import 'dart:js' as js;
bool _hasTouchSupport;
bool get hasTouchSupport {
if(_hasTouchSupport == null) {
_hasTouchSupport = js.context.callMethod('hasTouchSupport');
}
return _hasTouchSupport;
}
void main() {
print(hasTouchSupport);
}
false
在 Dartium/Chrome 在 Linux
true
我的 Android phone
根据 What's the best way to detect a 'touch screen' device using JavaScript? 的说法,拥有适用于所有浏览器的东西并不容易。
如果您使用 Modernizr,您可以使用:
import 'dart:js' as js;
bool get isTouchDevice => js.context['Modernizr']['touch'];
要开发响应式应用程序,我们需要知道用户是使用他的手指还是鼠标来调整应用程序的行为。例如,如果屏幕是可触摸的,按钮会更大...
我们可以通过监听Window.onTouch
事件和Window.onMouse
事件来猜测屏幕是否可触摸。
但我想在应用程序加载时知道它:在用户进行任何交互之前。
我该怎么做?
您可以使用 dart:js
并使用此答案中显示的方法
将此添加到您的 index.html
<script type="application/javascript">
function hasTouchSupport() {
return 'ontouchstart' in document.documentElement;
}
</script>
然后像
这样从 Dart 调用它import 'dart:html';
import 'dart:js' as js;
bool _hasTouchSupport;
bool get hasTouchSupport {
if(_hasTouchSupport == null) {
_hasTouchSupport = js.context.callMethod('hasTouchSupport');
}
return _hasTouchSupport;
}
void main() {
print(hasTouchSupport);
}
false
在 Dartium/Chrome 在 Linux
true
我的 Android phone
根据 What's the best way to detect a 'touch screen' device using JavaScript? 的说法,拥有适用于所有浏览器的东西并不容易。
如果您使用 Modernizr,您可以使用:
import 'dart:js' as js;
bool get isTouchDevice => js.context['Modernizr']['touch'];