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