halkyon/third_party/keyboard_height_plugin/lib/keyboard_height_plugin.dart
Tizian 「ティツィアーン」 438ce20dbf
build: Android's built-in Kotlin, the three plugins applying KGP themselves patched in third_party/
AGP 9 compiles Kotlin itself (android.builtInKotlin=true in every app),
and warns that applying the Kotlin Gradle Plugin will soon fail.
flutter_web_auth_2 5.1.0, keyboard_height_plugin 0.3.0 and flutter_tts
4.2.5 still apply it unconditionally, so their pub releases are copied
into third_party/ with only their android/build.gradle changed, and
the root overrides them by path (third_party/README.md says when to
drop each). The servers' images copy third_party/, as pub refuses an
override whose path is missing. third_party/ isn't our own code: left
out of the analysis and the format check.

All four apps' APKs build without the warning. A Kotlin daemon's
session file that slipped into Train's android/ goes, and every app's
android/.gitignore keeps .kotlin/ out.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-11-04 09:32:13 +01:00

29 lines
788 B
Dart

import 'dart:async';
import 'package:flutter/services.dart';
typedef KeyboardHeightCallback = void Function(double height);
class KeyboardHeightPlugin {
static const EventChannel _keyboardHeightEventChannel =
EventChannel('keyboardHeightEventChannel');
StreamSubscription? _keyboardHeightSubscription;
void onKeyboardHeightChanged(KeyboardHeightCallback callback) {
if (_keyboardHeightSubscription != null) {
_keyboardHeightSubscription!.cancel();
}
_keyboardHeightSubscription =
_keyboardHeightEventChannel.receiveBroadcastStream().listen(
(dynamic height) {
callback(height as double);
},
);
}
void dispose() {
if (_keyboardHeightSubscription != null) {
_keyboardHeightSubscription!.cancel();
}
}
}