免責事項:この記事はブロガーオリジナル記事です、続くBY-SAのCC 4.0を著作権契約、複製、元のソースのリンクと、この文を添付してください。
我々がテストするためのテストをアプリに入れたときに今、APPの多くは内部に、ユーザーが携帯電話のシーンの揺れが、最も一般的なマイクロ手紙、QQや他のソーシャルAPP内部の揺れを拾うようになるだけでなく、多くの場合に追加しますこのよう次のシナリオとして、ポップシーンの切り替え環境を振ります。
だから、ここフラッターモニターフォン「シェイク」とその後の論理演算に追加する方法をお見せします。
まず第一に、私たちはフラッター政府開発使用するセンサーを(sensors
)プラグインではpub spec.yaml
、コードのディレクトリの下に以下を追加し、次に保存し、通常の状況下では、IDEが自動的にダウンロードを開始します。
# 用于访问加速度计和陀螺仪传感器。
# https://pub.dev/packages/sensors#-readme-tab-
sensors: ^0.4.0+1
その後、輸入参照関連プロジェクト。
import 'package:flutter/material.dart';
// 导入传感器(`sensors`)插件
import 'package:sensors/sensors.dart';
// 导入演示用的苹果风格组件库
import 'package:flutter/cupertino.dart';
そして、メインのコードがあります。
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
/// 是否已经显示摇一摇弹窗。
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('Flutter Demo 主页'),
),
);
}
}
上記コードは、前記コアコード以下、実行直接コピーすることができます。
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) {
使用accelerometerEvents.listen
返すために、聞くために加速度計を追加するAccelerometerEvent event
がx
、y
、z
三次元座標移動の中心として、携帯電話の現在位置に、それぞれ、3つのパラメータを。
その後、設定value
三次元運動のようにすることは、その後の処理コードの閾値に達したときに、閾値を調整し、設定しisShow
た記録ウィンドウが現在排出されbool
第二のハードルの値を。
以下のように、最終的な効果があります。