탭한 위치의 위치값(Offset)을 찾으려고 한다. positioned tap detector
패키지를 사용한다.
패키지 호출
import 'package:positioned_tap_detector_2/positioned_tap_detector_2.dart';
탭할때마다, 위치값이 바뀔거고, setState
처리 해주기 귀찮으니, provider
사용
class MyPosition with ChangeNotifier {
TapPosition _position = TapPosition(Offset.zero, Offset.zero);
TapPosition get position => _position;
positionChange(TapPosition newpos) {
_position = newpos;
notifyListeners();
}
}
TapPosition
값을 받아와서, provider
에 전달하기 위한 메소드 작성
void setPosition(TapPosition newpos) =>
context.read<MyPosition>().positionChange(newpos);
PositionedTapDetector2
앱으로 위치값을 반환할 대상 앱을 감싸주고, 위의 메소드를 onTap
에 넣어줌
PositionedTapDetector2(
onTap: setPosition,
child: Container(
width: double.infinity,
height: double.infinity,
color: Colors.yellow.withOpacity(0.3),
),
),
텍스트 위젯으로 확인해보면, ... 잘 나오는 것을 알 수 있고, orientation
이 변해도 잘 작동하는 것을 알 수 있음.
Positioned(
top: 60,
left: 20,
child: Text(
'X position : ${context.watch<MyPosition>().position.relative!.dx.toStringAsFixed(1)}' +
'\n'
'Y position : ${context.watch<MyPosition>().position.relative!.dy.toStringAsFixed(1)}',
style: const TextStyle(
fontSize: 40,
),
),
),
끝.
'Dead Code > Flutter_Dart' 카테고리의 다른 글
[플러터] Rive 오랜만에 사용 (0) | 2023.03.26 |
---|---|
[플러터] web 빌드 그리고 row/column 리스트 개별 관리 (0) | 2023.03.16 |
[플러터] Rive animation 실행은 해보자 #1 (0) | 2022.09.16 |
[플러터] reorderableList - 리스트 순서 바꾸기 (0) | 2022.09.14 |
[플러터] 위젯 사이즈 확인하기 (0) | 2022.09.13 |
[플러터] web - NetworkImage, 이미지 안뜰 때 (0) | 2022.09.01 |
[플러터] 엑셀 날짜를 DATETIME으로 변경 (0) | 2022.08.30 |
[플러터] 플러터로 만든 웹페이지 github 호스팅 시 안뜰 때. (0) | 2022.08.26 |
[다트] MAP : Map<int, List> (0) | 2022.08.05 |
[플러터] textbutton Hover 설정 (0) | 2022.07.30 |