Клавиатура толкает FloatingActionButton вверх в приложении флаттера - PullRequest
0 голосов
/ 09 января 2019

Я пытаюсь создать простое приложение «To Do» во всплывающем окне с плавающей кнопкой действия внизу, которое при нажатии отображает диалоговое окно «Предупреждение» для добавления элементов в список. Каждый раз, когда я нажимаю на кнопку, клавиатура нажимает кнопку действия вверх, вызывая ошибку переполнения. Есть ли способ избежать нажатия кнопки действия вверх при открытии клавиатуры? Вот снимок, который я сделал: Snapshot Ниже исходного кода:

import 'package:flutter/material.dart';
import '../model/todo_item.dart';

class ToDoScreen extends StatefulWidget {
  @override
  _ToDoScreenState createState() => _ToDoScreenState();
}

class _ToDoScreenState extends State<ToDoScreen> {
  TextEditingController _textEditingController = TextEditingController();
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      backgroundColor: Colors.blueAccent,
      body: Column(
        children: <Widget>[ToDoItem("Going for a Walk", "12 January, 2019")],
      ),
      floatingActionButton: FloatingActionButton(
        tooltip: 'Add Item',
        child: Icon(Icons.add),
        backgroundColor: Colors.red,
        onPressed: _showFormDialog,
      ),
    );
  }

  void _showFormDialog() {
    var alert = AlertDialog(
      content: Row(
        children: <Widget>[
          Expanded(
            child: TextField(
              controller: _textEditingController,
              autofocus: true,
              decoration: InputDecoration(
                  labelText: "Item",
                  hintText: "eg. Buy Vegetables",
                  icon: Icon(Icons.note_add)),
            ),
          )
        ],
      ),
      actions: <Widget>[
        FlatButton(
          onPressed: () {
            // _handleSubmit(_textEditingController.text);
            _textEditingController.clear();
          },
          child: Text("Save ToDo"),
        ),
        FlatButton(
          onPressed: () {
            Navigator.pop(context);
          },
          child: Text("Cancel"),
        )
      ],
    );
    showDialog(context: context, builder: (BuildContext context) => alert);
  }
}

Ответы [ 2 ]

0 голосов
/ 18 мая 2019

Оберните ваш полный код в это

 new Container(
child: Column(
children: <Widget>[
        Expanded(
          child: SingleChildScrollView(
            child: Stack(
              children: <Widget>[
              // Your body code
              ] // Widget
             ), // Stack
            ), // SingleChildScrollView
           ), // Expanded
        Container(
        alignment: Alignment.bottomCenter,
        padding: EdgeInsets.all(10.0),
        child : 
        // button code here 
        // to make button full width use minWidth: double.infinity,
         ,
        ), //Container
        ], // Widget
        ), // Column
        ), // Container
0 голосов
/ 17 января 2019

У меня была такая же проблема, когда мою кнопку с плавающим действием нажимали вверх.

Я решил это, используя свойство:

resizeToAvoidBottomPadding: false,

На родителя Scafold.

Я протестировал его с вашим кодом, он также решает проблему.

...