Flutter:我想让我的屏幕在选择Textfield时自动向上滚动,这样我的提交按钮就不会被隐藏?

l7wslrjt  于 2023-05-30  发布在  Flutter
关注(0)|答案(2)|浏览(233)

我目前正在将列小部件 Package 在SingleChildScrollView()中,并设置resizeToAvoidBototmInset:Scaffold()为false,但在选择Textfields时屏幕不会自动向上滚动。理想情况下,我希望提交按钮显示当用户输入数据到第二个领域。目前,当键盘可见时,它会隐藏在某些设备上。

Scaffold(
    resizeToAvoidBottomInset: false,
    body: SingleChildScrollView(
        child: SafeArea(
            child: Stack(
                children: <Widget> [
                    CustomPaint(),
                    Column(children: <Widget>[
                        TextField(), 
                        TextField(), 
                        RaisedButton(),
                    ])
                ]
            )
        )
    )
)

这就是当前的格式。我在文本域上没有一个FocusNode(),并且确实考虑过基于键盘可见时提高文本域,但这会干扰我的自定义油漆背景,并且不想有这种效果。
从概念的Angular 来看,是否有什么我错过了,这是阻止屏幕自动向上滚动。

b4lqfgs4

b4lqfgs41#

尝试使用以下代码:

GlobalKey globalKey = GlobalKey();

...

TextField(
  onTap: ()async{
    await Future.delayed(Duration(milliseconds: 500));
    RenderObject object = globalKey.currentContext.findRenderObject();
    object.showOnScreen();
  },
), 
RaisedButton(
  key: globalKey,
  onPressed: (){},
),
sq1bmfud

sq1bmfud2#

对于窒息滚动使用这个:

GlobalKey globalKey = GlobalKey();
    
    ...
    
    
    TextField(
      onTap: ()async{
        await Future.delayed(const Duration(milliseconds: 500));
        Scrollable.ensureVisible(globalKey.currentContext!, duration: const Duration(milliseconds: 500));
      },
    ), 
    RaisedButton(
      key: globalKey,
      onPressed: (){},
    ),

相关问题