Flutter :启用文本字段时,背景图像向上移动。 “resizeToAvoidBottomInset”禁用滚动。我哪里错了?

Posted

技术标签:

【中文标题】Flutter :启用文本字段时,背景图像向上移动。 “resizeToAvoidBottomInset”禁用滚动。我哪里错了?【英文标题】:Flutter : When textfield is enabled, background image moves upward. "resizeToAvoidBottomInset" disables scrolling. Where am I going wrong? 【发布时间】:2020-09-30 23:54:15 【问题描述】:

我的登录屏幕有一个背景图片。当用户点击文本框时,容器必须向上移动,这样文本框/按钮才不会隐藏在键盘下方。

下面是我的代码,它工作正常。但是当启用文本字段时,背景图像只会向上移动。

    class _SignInState extends State<SignIn> 
      TextEditingController usernameController = TextEditingController();
      TextEditingController passwordController = TextEditingController();

      @override
      Widget build(BuildContext context) 
        return Scaffold(
          //resizeToAvoidBottomInset: false,
          body: Container(
            width: MediaQuery.of(context).size.width,
            height: MediaQuery.of(context).size.height,

            decoration: BoxDecoration(
              image: DecorationImage(
                image: AssetImage('assets/images/bg.png'),
                fit: BoxFit.cover,
            )),

            child: SingleChildScrollView(
              padding: EdgeInsets.all(20),
              child: Column(
                crossAxisAlignment: CrossAxisAlignment.stretch, 
                children: <Widget>[

                  --- added username & password textfield ---
                  --- added submit and forgot password buttons ----

为了避免这种情况,我添加了:

    resizeToAvoidBottomInset: false,

作为“脚手架”的属性。现在滚动停止工作。

我哪里错了?

【问题讨论】:

【参考方案1】:

用容器包裹脚手架,添加Boxdecoration(可以在其中添加背景图片)并使脚手架的背景颜色透明。

    class _SignInState extends State<SignIn> 
     TextEditingController usernameController = TextEditingController();
     TextEditingController passwordController = TextEditingController();

     @override
     Widget build(BuildContext context) 
      return Container(
       width: MediaQuery.of(context).size.width,
       height: MediaQuery.of(context).size.height,

       decoration: BoxDecoration(
          image: DecorationImage(
            image: AssetImage('assets/images/bg.png'),
            fit: BoxFit.cover,
       )),

       child: Scaffold(
        backgroundColor: Colors.transparent,
        body: Container(
         width: MediaQuery.of(context).size.width,
         height: MediaQuery.of(context).size.height,
         child: SingleChildScrollView(
             --- rest of the code ---

【讨论】:

以上是关于Flutter :启用文本字段时,背景图像向上移动。 “resizeToAvoidBottomInset”禁用滚动。我哪里错了?的主要内容,如果未能解决你的问题,请参考以下文章

如何使底栏随键盘向上移动(颤动)

关注 NativeScript+Angular 应用程序中的文本字段时,表单字段不会向上移动

键盘存在时 UIViewController 向上移动

当键盘出现Swift时,使用文本字段和按钮向上移动视图

当用户单击 UIWebView 内的文本字段时,出现键盘后屏幕不会向上移动

Swift,iOS - 单击以显示文本字段时按钮向上移动?然后搬回去?