带有背景图像和表单的 Flutter Stack

Posted

技术标签:

【中文标题】带有背景图像和表单的 Flutter Stack【英文标题】:Flutter Stack with background image and form 【发布时间】:2020-05-09 01:18:17 【问题描述】:

我有一个屏幕,其中背景图像设置为填满整个屏幕,除此之外,还有输入字段。当我单击 TextFormField 时,会显示键盘并将背景图像推到顶部,这是我不希望的行为。

你知道怎么不顶推图像吗?我认为Form(带有SingleChildScrollView)小部件呈现在屏幕顶部(索引>那个背景图像),所以我不明白为什么图像会变形。有什么想法吗?

代码:

   class LoginScreen extends StatelessWidget 
      @override
      Widget build(BuildContext context) 
        return Scaffold(
            body: Stack(
          children: <Widget>[
            Container(
              width: double.infinity,
              child: Image.asset("imageAsset",
                     fit: BoxFit.fitWidth),
            ),
            SingleChildScrollView(
              child: Form(
                child: Column(
                  mainAxisSize: MainAxisSize.max,
                  mainAxisAlignment: MainAxisAlignment.start,
                  children: <Widget>[
                    FormField(), // Example
                    FormField(), // Example
                    FormField(), // Example
                  ]),
            )
          ],
        )));
      
    

【问题讨论】:

尝试在你的脚手架中设置 resizeToAvoidBottomInset: false 我试过了,但是后来键盘在第三个FormField()上面看不到文字了。 【参考方案1】:

使用 TextFormField,我建议使用 ListView 而不是 singleChildScrollView。

class LoginScreen extends StatelessWidget 
 @override
 Widget build(BuildContext context) 
 return Scaffold(
    body: Stack(
  children: <Widget>[
    Container(
      width: double.infinity,
      child: Image.asset("imageAsset", fit: BoxFit.fill),
    ),
    ListView(
      children: <Widget>[
        Form(
          child: Column(
              mainAxisSize: MainAxisSize.max,
              mainAxisAlignment: MainAxisAlignment.start,
              children: <Widget>[
                TextFormField(), // Example
                TextFormField(), // Example
                TextFormField(), // Example
              ]),
        ),
      ],
    )
  ],
  ));
  
  

【讨论】:

以上是关于带有背景图像和表单的 Flutter Stack的主要内容,如果未能解决你的问题,请参考以下文章

在 Flutter 中上传带有 http.post 和注册表单的图像?

Flutter 制作漂亮的登录表单

flutter 布局 Stack Positioned的混合操作 两个组件Container重叠 构建背景圆角操作 类似css的relative

flutter 布局 Stack Positioned的混合操作 两个组件Container重叠 构建背景圆角操作 类似css的relative

带有 React JS Div 和组件的全屏背景图像

如何制作一个包含在整个屏幕上拉伸的背景图像的颤动应用程序,带有返回句子的图像的圆形按钮?