参考
参考
sensors_plus: ^1.3.2
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:sensors_plus/sensors_plus.dart';
import 'package:social_im/common/colors.dart';
class ShakeGame extends StatefulWidget {
const ShakeGame({Key? key}) : super(key: key);
@override
State<StatefulWidget> createState() => ShakeGameState();
}
class ShakeGameState extends State<ShakeGame> {
bool isShow = false;
final _streamSubscriptions = <StreamSubscription<dynamic>>[];
@override
void initState() {
shakeListen();
super.initState();
}
@override
void dispose() {
super.dispose();
for (final subscription in _streamSubscriptions) {
subscription.cancel();
}
}
shakeListen() {
_streamSubscriptions
.add(userAccelerometerEvents.listen((UserAccelerometerEvent event) {
print("event的值${event}");
int value = 4;
if (event.x >= value ||
event.x <= -value ||
event.y >= value ||
event.y <= -value ||
event.z >= value ||
event.z <= -value) {
print("已摇了");
if (isShow == false) {
setState(() {
isShow = true;
});
Future.delayed(const Duration(seconds: 2), () {
print("跳出弹窗");
});
}
}
}));
}
@override
Widget build(BuildContext context) {
return Scaffold(
resizeToAvoidBottomInset: false,
appBar: AppBar(
title: const Text('摇一摇'),
backgroundColor: CommonColors.getThemeColor(),
),
body: Center(
child: Padding(
padding: const EdgeInsets.only(left: 5),
child: Image(
image: isShow
? const AssetImage('assets/images/icon_lan_match.png')
: const AssetImage(
'assets/images/conversion/icon_conversion_album.png'),
width: 6,
height: 11))),
);
}
}