flutter_flutter/framework/debug/shake-to-reload.sky
Adam Barth 29e3ba99e9 Make shake-to-reload actually work
We need to create a new service provider when we navigate to a new page
otherwise the new page is sad that the old page took its service provider.

R=eseidel@chromium.org

Review URL: https://codereview.chromium.org/962383003
2015-02-27 16:38:40 -08:00

44 lines
1.0 KiB
Plaintext

<script>
import '/sky/framework/shell.dart' as shell;
import 'dart:sky';
import 'package:sky/services/sensors/sensors.mojom.dart';
// TODO(abarth): We should factor this out into a kinematics library.
class _ShakeDetector extends SensorListener {
_ShakeDetector() {
SensorServiceProxy sensorService = new SensorServiceProxy.unbound();
shell.requestService(sensorService);
_stub = new SensorListenerStub.unbound()
..delegate = this;
sensorService.ptr.addListener(SensorType_ACCELEROMETER, _stub);
_stub.listen();
}
void onAccuracyChanged(int accuracy) {
}
void onSensorChanged(SensorData data) {
double value = data.values[0] + data.values[1] + data.values[2];
if (isShaking && value < 15.0)
didCompleteShake();
else if (value > 40.0)
isShaking = true;
}
void didCompleteShake() {
window.location.assign(document.URL);
_stub.close();
}
bool isShaking = false;
SensorListenerStub _stub;
}
_ShakeDetector _detector;
void _init(_) {
_detector = new _ShakeDetector();
}
</script>