Стек флаттера с фоновым изображением и формой - PullRequest
0 голосов
/ 22 января 2020

У меня есть экран, на котором фоновое изображение установлено на весь экран, а поверх него есть поля ввода. Когда я нажимаю на TextFormField, отображается клавиатура, а фоновое изображение выдвигается вверх, чего я не хочу.

Знаете ли вы, как не вверху pu sh изображение вверх? Я думаю, что виджет Form (с SingleChildScrollView) отображается в верхней части экрана (index> that backgroundImage), поэтому я не понимаю, почему изображение деформируется. Есть идеи?

Код:

   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
                  ]),
            )
          ],
        )));
      }
    }

1 Ответ

0 голосов
/ 06 марта 2020

Используйте 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
              ]),
        ),
      ],
    )
  ],
  ));
  }
  }
...