Flutter 如何优雅的实现一个 KeyboardBar?
参考 这个回答, 我用 Scaffold
+ bottomSheet
简单实现了一个,但有个问题,就是使用 image_picker
选取图片后,自定义的 KeyboardBar
(bottomSheet
)会被键盘遮住一部分,具体可以看我提的 issue。
参考 这个回答 重新实现了一下,也是一模一样的问题,似乎是 Flutter 的 MediaQuery.of(context).viewInsets.bottom
出现了 BUG 。
相关 issue:
- https://github.com/flutter/flutter/issues/138346
- https://github.com/flutter/flutter/issues/134798
- https://github.com/flutter/flutter/issues/133537
现在 App 着急上线,但不知道 Flutter 什么时候能修复这个 BUG ,是否还有其它方式能实现相同的功能呢?
Flutter 如何优雅的实现一个 KeyboardBar?
更多关于Flutter 如何优雅的实现一个 KeyboardBar?的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
选取完图片你把键盘隐藏掉,不就避免了吗
(如果键盘需要打开的话,让输入框重新 focus )
更多关于Flutter 如何优雅的实现一个 KeyboardBar?的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
是个好的思路,我尝试一下,感谢
在Flutter中实现一个优雅的KeyboardBar(键盘工具栏),可以通过自定义一个包含输入栏和工具栏的组件来实现。以下是一个简洁的实现思路:
-
使用
Column
布局:将键盘栏(通常是一个TextField
)和工具栏(可以是Row
、Stack
或其他布局)垂直排列。 -
监听键盘状态:利用
FocusNode
和FocusScopeNode
监听键盘的显示和隐藏状态,从而动态调整工具栏的显示。 -
自定义工具栏:工具栏可以包含按钮(如发送、附件、表情等),使用
IconButton
或FlatButton
等组件,并根据需要设置图标和文本。 -
动画效果:为了使工具栏的显示更加优雅,可以加入动画效果,如滑动(
SlideTransition
)或淡入淡出(FadeTransition
)。 -
响应式布局:确保工具栏在不同屏幕尺寸和方向上都能良好显示,可以使用
LayoutBuilder
或MediaQuery
进行响应式设计。 -
处理事件:为工具栏中的按钮设置点击事件,根据业务需求执行相应的逻辑,如发送消息、打开选择器等。
实现时,可以将这些组件封装成一个自定义Widget,以提高代码的可重用性和可维护性。这样不仅能实现一个功能完善的KeyboardBar,还能保证UI的优雅和流畅。如果需要更复杂的功能,如自定义键盘或高级动画,可以考虑使用第三方库或进一步扩展自定义组件的功能。