Flutter:浮动操作按钮固定位置

hoa*_*oan 2 dart flutter

我有以下代码:

return Scaffold(
      appBar: AppBar(
        title: Text('Sample Code'),
      ),
      body: ListView(
        padding: const EdgeInsets.all(20.0),
        children: <Widget>[
          TextField(
            decoration: InputDecoration(labelText: "Text"),
          ),
          TextField(
            decoration: InputDecoration(labelText: "Text"),
          ),
          TextField(
            decoration: InputDecoration(labelText: "Text"),
          ),
        ],
      ),
      bottomNavigationBar: BottomAppBar(
        child: Container(
          height: 50.0,
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: () {},
        child: Icon(Icons.add),
      ),
      floatingActionButtonLocation: FloatingActionButtonLocation.centerDocked,
    );
Run Code Online (Sandbox Code Playgroud)

每当键盘出现并输入文本时,就会TextField向上FloatingActionButton移动到键盘顶部,如下所示:

浮动操作按钮

我想要的是按钮保留在底部导航栏中,并且在键盘显示时不移动。我添加resizeToAvoidBottomPadding: false,Scaffold,它可以防止按钮移动,但也阻止我ListView移动以在键盘出现时保持可见。

Dan*_*mme 10

将浮动操作按钮包裹在 a 内positioned widget对我来说不起作用。但是,结合在脚手架中添加属性

resizeToAvoidBottomPadding:假,

您还可以使用 MediaQuery.of 方法将 SingleChildScrollView 小部件与填充一起使用...

return Scaffold(
  resizeToAvoidBottomInset: false,
  backgroundColor: Colors.lightBlueAccent,
  floatingActionButton: FloatingActionButton(
    backgroundColor: Colors.lightBlueAccent,
    child: Icon(Icons.add),
    onPressed: () {
      showModalBottomSheet(
          context: context,
          isScrollControlled: true,
          builder: (context) => SingleChildScrollView(
              child: Container(
                  padding: EdgeInsets.only(bottom: MediaQuery.of(context).viewInsets.bottom),
                  child: AddTaskScreen())),
          backgroundColor: Colors.transparent);
    },
  ),
Run Code Online (Sandbox Code Playgroud)