플러터 코드 팁 --- 흔들

면책 조항 :이 문서는 블로거 원본입니다, 추적 에 의해-SA의 CC 4.0 저작권 계약, 복제, 원본 소스 링크이 문을 첨부 해주세요.
이 링크 : https://blog.csdn.net/hekaiyou/article/details/93111185

우리가 테스트하는 시험에 APP를 넣을 때 지금 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 eventx, y, z삼차원 좌표 운동의 중심으로 휴대 전화의 현재 위치에 각각 세 개의 매개 변수를.

그 후, 설정 value이 이후의 처리 코드의 임계 값에 도달하고, 설정할 때 입체 운동으로하면, 임계 값을 조정 isShow기록 윈도우를 현재 토출 된 bool제 장애물에 대한 값.

다음 최종 효과가있다.

여기에 그림 삽입 설명

추천

출처blog.csdn.net/hekaiyou/article/details/93111185