29 lines
836 B
Dart
29 lines
836 B
Dart
|
import 'dart:async';
|
||
|
import 'package:flutter/services.dart';
|
||
|
|
||
|
typedef KeyboardHeightCallback = void Function(double height);
|
||
|
|
||
|
class KeyboardHeightPlugin {
|
||
|
static const EventChannel _keyboardHeightEventChannel = const 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();
|
||
|
}
|
||
|
}
|
||
|
}
|