Flutter: когда текстовое поле включено, фоновое изображение перемещается вверх. resizeToAvoidBottomInset отключает прокрутку. Где я ошибаюсь?

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

Ниже мой код, и он отлично работает. Но когда текстовое поле включено, фоновое изображение просто перемещается вверх.

    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 ---
Другие вопросы по тегам