면책 조항 :이 문서는 블로거 원본입니다, 추적 에 의해-SA의 CC 4.0 저작권 계약, 복제, 원본 소스 링크이 문을 첨부 해주세요.
우리가 테스트하는 시험에 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 event
가 x
, y
, z
삼차원 좌표 운동의 중심으로 휴대 전화의 현재 위치에 각각 세 개의 매개 변수를.
그 후, 설정 value
이 이후의 처리 코드의 임계 값에 도달하고, 설정할 때 입체 운동으로하면, 임계 값을 조정 isShow
기록 윈도우를 현재 토출 된 bool
제 장애물에 대한 값.
다음 최종 효과가있다.