29 lines
830 B
Dart
29 lines
830 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();
|
|
}
|
|
}
|
|
}
|