코드팩토리의 플래터 프로그래밍 저자 최지호(코드팩토리) 출간 골든래빗㈜ 출시 2023.01.01.01.오늘 만들어 볼 것은 휴대폰을 흔들면 새로운 주사위를 뽑아주는 디지털 주사위 앱이다.좀 더 구체적으로는 화면이 총 2개로 첫 화면에는 휴대폰을 흔들면 난수가 생성돼 새로운 주사위의 눈금을 보여주는 기능을, 두 번째 화면에는 흔들림을 감지하는 민감도를 사용자가 지정할 수 있는 기능을 구현해보자.이번 장에서 가장 필요한 지식은 가속도계 자이로스코프 Sensor_Plus 정도가 된다. 디지털 주사위 앱 완성 모습 에뮬레이터 실행 불가아이패드(iPad)에서 실행해 본 앱그럼 바로 학습 START~!* 주의사항 시뮬레이터에서는 아래에서 배우는 가속도계와 자이로스코프 사용이 불가능하기 때문에 실제로 본인 기기로 테스트를 해봐야 한다. 10.1.1 가속도계가속도계는 말 그대로 특정 물체가 특정 방향으로 이동하는 가속도가 어느 정도인지를 숫자로 측정하는 기기다.휴대폰을 정면에서 보았을 때 x축은 좌우로, y축은 상하로, z축은 전후로 움직이는 방향을 측정하여 double 값으로 반환한다. 10.1.2 자이로스코프가속도계는 직선의 움직임만 측정이 가능하다.그러나 자이로스코프는 이 단점을 보완하여 x, y, z축의 회전을 측정할 수 있다.휴대폰을 정면에서 보았을 때 x축은 좌우로, y축은 상하로, z축은 전후로 회전하는 방향을 측정하여 double값으로 반환한다.즉 가속도계는 직선의 움직임 방향을, 자이로스코프는 회전하는 방향을 돌려준다. 10.1.3 Sensor_Plus 패키지sensor_plus 패키지를 사용하면 휴대폰 가속도계와 자이로스코프 센서를 쉽게 사용할 수 있다.하지만 가속도계와 자이로스코프 센서의 데이터는 x, y, z축의 움직임을 각각 돌려주기 때문에 전반적인 휴대폰 움직임을 측정하기 위해서는 정규화(normalization)가 필요하다. 한마디로 x, y, z의 각 값을 통합해 전반적인 움직임 수치를 계산하고 휴대전화를 흔든 정도를 수치화해야 한다. 이것은 수학적인 부분이기 때문에 미리 정규화 작업을 해 놓은 shake 패키지를 이용할 것이다. 10.2.1 정수 추가프로그래밍을 하다 보면 문자의 크기나 주색처럼 반복 사용하는 상수가 생긴다.만약 이것들은 한번 입력하고 다시는 변경하지 않으면 각각 작성해도 상관없지만 나중에 일괄 변경을 하려면 매우 손이 많이 간다. 따라서 반복 사용하는 정수를 다른 파일로 정리해 두는 것이 좋다.[lib/const/colors.dart] 위치 컬러 정보 추가import ‘package:flutter/material.dart’;const backgroundColor = Color(0xFF0E0E0E); // 배경색const PrimaryColor = Colors.white; // 주 색상// Colors.grey는 const로 선언이 가능하지만,// 600이라는 키값을 입력하면 런타임에 생상이 계산되기 때문에 const 사용이 불가함.final secondaryColor = Colors.grey[600] // 보조 색상10.2.2 이미지 추가 및 Pubspect.yaml 설정[asset] 폴더를 만들고 그 밑에 [img] 폴더를 작성한다.이번 프로젝트에서 사용하는 주사위 이미지는 github 링크를 클릭하면 다운로드 받을 수 있다.[pubspec.yaml] shake 패키지 추가 및 이미지 사용 설정본격 디지털 주사위 앱 생성 주석 참고main.dart 파일 코드main.dart 파일 코드2. home_screen.dart 파일 코드2. home_screen.dart 파일 코드3. root_screen.dart 파일 코드3. root_screen.dart 파일 코드4. settings_screen.dart 파일코드4. settings_screen.dart 파일코드이번에는 지금까지 만들어 본 앱보다 확실히 이해가 필요한 코드가 다수 있습니다!하지만 주석에 자세히 설명해 두었으니 참고해서 따라오시면 충분히 이해하실 수 있을 것 같습니다:) 실행 결과는 iPad에서만 실행됩니다. (에뮬레이터 불가)아이패드(iPad)에서 실행해 본 앱*참고로 아이폰 13 프로에서는 스마트폰을 흔들어도 작동하지 않는다. 아이패드에서는 정상 작동한다! (해결하려고 계속 매달렸지만 결국 하지 못했다.) .. 혹시 알고 있다면 왜 그런지 해결방법을 댓글로 알려주세요!!오늘은 여기까지!