1. 程式人生 > 其它 >Flutter之搖一搖功能的實現

Flutter之搖一搖功能的實現

1.在pubspec.yaml引入外掛

sensors: ^0.4.0+1

2.編寫shake.dart,程式碼如下:

import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:sensors/sensors.dart';

class Shake extends StatefulWidget {
  @override
  _ShakeState createState() => _ShakeState();
}

class _ShakeState extends State<Shake> {
  
/// 是否已經顯示搖一搖彈窗。 bool isShow = false; @override void initState() { accelerometerEvents.listen((AccelerometerEvent event) { // 搖一搖閥值,不同手機能達到的最大值不同,如某品牌手機只能達到20。 int value = 20; if (event.x >= value || event.x <= -value || event.y >= value || event
.y <= -value || event.z >= value || event.z <= -value) { if (isShow == false) { isShow = true; showDialog<bool>( context: context, barrierDismissible: true, builder: (BuildContext context) {
return CupertinoAlertDialog( title: Text('搖一搖'), content: Text('您搖動了螢幕'), actions: [ CupertinoDialogAction( child: Text('確定'), onPressed: () { Navigator.of(context).pop(true); }, ), ], ); }, ).then((onValue) { if (onValue != null) { // 點選確定後返回的業務邏輯。 } isShow = false; }); } } }); super.initState(); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text('搖一搖'), ), body: Center( child: Text('請搖動手機'), ), ); } }

3.從其他頁面跳轉過去

void shake(){
  Navigator.of(context).push(MaterialPageRoute(builder: (_) => Shake()));
}