软键盘覆盖 SlidingUpPanel 上的 TextInput 颤动
Soft Keyboard covers TextInput on the SlidingUpPanel flutter
这是我正在使用的 package,当我在 panelBuilder
中使用 TextInput 时,它同时具有 ListView 和 InputTextField,但是当我开始键入时,软键盘会覆盖 InputText 字段。
我也尝试添加这一行:
resizeToAvoidBottomInset: false,
在 Scaffold
加上 Manfiest 文件中的这个
<item name="android:windowFullscreen">true</item>
.
但运气不好。
以下为截图:
image one
[image two
将 panelBuilder
结果的内容包装在 Scaffold
中,不要更改 resizeToAvoidBottomInset
。默认情况下,调整大小为 true
,这会将内容向上移动以避免在出现时被键盘隐藏。 false
设置可防止调整大小。
下面的示例来自 slide_up_panel package example,panelBuilder
参数结果包含在 Scaffold
中。 (我不是建议你像我在下面所做的那样包装 _panel
,只是更容易展示以这种方式工作的示例。在 _panel
函数本身中使用脚手架可能更好。)
@override
Widget build(BuildContext context){
_panelHeightOpen = MediaQuery.of(context).size.height * .80;
return Material(
child: Stack(
alignment: Alignment.topCenter,
children: <Widget>[
SlidingUpPanel(
maxHeight: _panelHeightOpen,
minHeight: _panelHeightClosed,
parallaxEnabled: true,
parallaxOffset: .5,
body: _body(),
// WRAP panel contents in Scaffold
panelBuilder: (sc) => Scaffold(body: _panel(sc)),
// ↑↑↑↑↑↑↑↑
borderRadius: BorderRadius.only(topLeft: Radius.circular(18.0), topRight: Radius.circular(18.0)),
onPanelSlide: (double pos) => setState((){
_fabHeight = pos * (_panelHeightOpen - _panelHeightClosed) + _initFabHeight;
}),
),
为了测试自己,将 TextFormField 添加到 Widget _panel(ScrollController sc)
方法的底部(大约第 242 行)
SizedBox(height: 24,),
// ↓ Added for testing
TextFormField(
initialValue: 'type here',
onSaved: (txt) => null,
)
然后运行示例,向上滚动面板并点击文本字段让键盘向上滑动。
这是我正在使用的 package,当我在 panelBuilder
中使用 TextInput 时,它同时具有 ListView 和 InputTextField,但是当我开始键入时,软键盘会覆盖 InputText 字段。
我也尝试添加这一行:
resizeToAvoidBottomInset: false,
在 Scaffold
加上 Manfiest 文件中的这个
<item name="android:windowFullscreen">true</item>
.
但运气不好。
以下为截图:
image one
[image two
将 panelBuilder
结果的内容包装在 Scaffold
中,不要更改 resizeToAvoidBottomInset
。默认情况下,调整大小为 true
,这会将内容向上移动以避免在出现时被键盘隐藏。 false
设置可防止调整大小。
下面的示例来自 slide_up_panel package example,panelBuilder
参数结果包含在 Scaffold
中。 (我不是建议你像我在下面所做的那样包装 _panel
,只是更容易展示以这种方式工作的示例。在 _panel
函数本身中使用脚手架可能更好。)
@override
Widget build(BuildContext context){
_panelHeightOpen = MediaQuery.of(context).size.height * .80;
return Material(
child: Stack(
alignment: Alignment.topCenter,
children: <Widget>[
SlidingUpPanel(
maxHeight: _panelHeightOpen,
minHeight: _panelHeightClosed,
parallaxEnabled: true,
parallaxOffset: .5,
body: _body(),
// WRAP panel contents in Scaffold
panelBuilder: (sc) => Scaffold(body: _panel(sc)),
// ↑↑↑↑↑↑↑↑
borderRadius: BorderRadius.only(topLeft: Radius.circular(18.0), topRight: Radius.circular(18.0)),
onPanelSlide: (double pos) => setState((){
_fabHeight = pos * (_panelHeightOpen - _panelHeightClosed) + _initFabHeight;
}),
),
为了测试自己,将 TextFormField 添加到 Widget _panel(ScrollController sc)
方法的底部(大约第 242 行)
SizedBox(height: 24,),
// ↓ Added for testing
TextFormField(
initialValue: 'type here',
onSaved: (txt) => null,
)
然后运行示例,向上滚动面板并点击文本字段让键盘向上滑动。