フラッターコードヒント---シェイク

免責事項:この記事はブロガーオリジナル記事です、続くBY-SAのCC 4.0を著作権契約、複製、元のソースのリンクと、この文を添付してください。
このリンク: https://blog.csdn.net/hekaiyou/article/details/93111185

我々がテストするためのテストをアプリに入れたときに今、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 eventxyz三次元座標移動の中心として、携帯電話の現在位置に、それぞれ、3つのパラメータを。

その後、設定value三次元運動のようにすることは、その後の処理コードの閾値に達したときに、閾値を調整し、設定しisShowた記録ウィンドウが現在排出されbool第二のハードルの値を。

以下のように、最終的な効果があります。

ここに画像を挿入説明

おすすめ

転載: blog.csdn.net/hekaiyou/article/details/93111185