Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 25 additions & 0 deletions lib/app/util/pointer_event_filter.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
import 'package:flutter/gestures.dart';

/// iPadOS 26.1+ 버그 임시 해결책
/// https://github.com/flutter/flutter/issues/175606
/// https://github.com/flutter/flutter/issues/177992
///
/// 상태바 터치 시 (0, 0) 좌표에 가짜 터치 이벤트가 발생하여
/// Popup, Drawer 등이 자동으로 닫히는 문제를 해결합니다.
class PointerEventFilter {
static bool _installed = false;

/// 앱 시작 시 호출하여 (0, 0) 좌표 터치 이벤트를 필터링합니다.
/// WidgetsFlutterBinding.ensureInitialized() 이후에 호출해야 합니다.
static void install() {
if (_installed) return;
GestureBinding.instance.pointerRouter.addGlobalRoute(_filterZeroOffsetEvent);
_installed = true;
}

static void _filterZeroOffsetEvent(PointerEvent event) {
if (event.position == Offset.zero) {
GestureBinding.instance.cancelPointer(event.pointer);
}
}
}
4 changes: 4 additions & 0 deletions lib/presentation/app.dart
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import 'package:grimity/app/environment/flavor.dart';
import 'package:grimity/app/linking/initialize_app_provider.dart';
import 'package:grimity/app/linking/pending_deep_link_provider.dart';
import 'package:grimity/app/static/push_notification.dart';
import 'package:grimity/app/util/pointer_event_filter.dart';
import 'package:grimity/presentation/common/provider/user_auth_provider.dart';
import 'package:talker_flutter/talker_flutter.dart';
import 'package:talker_riverpod_logger/talker_riverpod_logger.dart';
Expand All @@ -16,6 +17,9 @@ import 'package:flutter_localizations/flutter_localizations.dart';
void runFlavoredApp() async {
await Flavor.instance.setup();

// iPadOS 26.1+ 가짜 터치 이벤트 필터링
PointerEventFilter.install();

// Initialize talker
final talker = TalkerFlutter.init();

Expand Down