diff --git a/example/lib/main.dart b/example/lib/main.dart index 3f64764..3809f94 100644 --- a/example/lib/main.dart +++ b/example/lib/main.dart @@ -1,63 +1,76 @@ import 'package:flutter/material.dart'; -import 'dart:async'; - -import 'package:flutter/services.dart'; import 'package:keyboard_height_plugin/keyboard_height_plugin.dart'; void main() { - runApp(const MyApp()); + runApp(MyApp()); } -class MyApp extends StatefulWidget { - const MyApp({super.key}); - +class MyApp extends StatelessWidget { @override - State createState() => _MyAppState(); + Widget build(BuildContext context) { + return MaterialApp( + home: HomePage(), + ); + } } -class _MyAppState extends State { - String _platformVersion = 'Unknown'; - final _keyboardHeightPlugin = KeyboardHeightPlugin(); +class HomePage extends StatefulWidget { + @override + _HomePageState createState() => _HomePageState(); +} + +class _HomePageState extends State { + double _keyboardHeight = 0; + final KeyboardHeightPlugin _keyboardHeightPlugin = KeyboardHeightPlugin(); @override void initState() { super.initState(); - initPlatformState(); - } - - // Platform messages are asynchronous, so we initialize in an async method. - Future initPlatformState() async { - String platformVersion; - // Platform messages may fail, so we use a try/catch PlatformException. - // We also handle the message potentially returning null. - try { - platformVersion = - await _keyboardHeightPlugin.getPlatformVersion() ?? 'Unknown platform version'; - } on PlatformException { - platformVersion = 'Failed to get platform version.'; - } - - // If the widget was removed from the tree while the asynchronous platform - // message was in flight, we want to discard the reply rather than calling - // setState to update our non-existent appearance. - if (!mounted) return; - - setState(() { - _platformVersion = platformVersion; + _keyboardHeightPlugin.onKeyboardHeightChanged((double height) { + setState(() { + _keyboardHeight = height; + }); }); } @override - Widget build(BuildContext context) { - return MaterialApp( - home: Scaffold( + Widget build(BuildContext context) { + return Scaffold( + resizeToAvoidBottomInset: false, appBar: AppBar( - title: const Text('Plugin example app'), + title: Text('Keyboard Height'), ), body: Center( - child: Text('Running on: $_platformVersion\n'), + child: Stack( + children: [ + Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Text( + 'Keyboard height: $_keyboardHeight', + ), + SizedBox(height: 16), + ElevatedButton( + child: Text('Get Keyboard Height'), + onPressed: () => {}, + ), + ], + ), + Positioned( + bottom: _keyboardHeight, + left: 0, + right: 0, + child: TextField( + decoration: InputDecoration( + filled: true, + fillColor: Colors.orange, + hintText: 'Type here to open keyboard', + ), + ), + ), + ], + ), ), - ), - ); - } + ); + } }