当键盘显示时,Flutter Fexible Widget不会调整大小

时间:2019-07-30 08:35:55

标签: flutter flutter-layout

所以我正在使用一个带有聊天屏幕的应用程序,所以我完成了大多数功能,但是我注意到当键盘显示但消息输入确实向上移动时,listView并没有调整大小。

如您所见,输入确实向上移动,但ListView没有向上移动,所以当键盘出现时,我尝试通过使用ListViewScrollController向下移动到底部,但是也没用

这是我当前的实现方式:

chat_view.dart

    Container(
      height: MediaQuery.of(context).size.height,
      width: MediaQuery.of(context).size.width,
      child: Column(
        mainAxisAlignment: MainAxisAlignment.end,
        children: <Widget>[
          MessageListView(),
          ChatInputToolbar(),
        ]
      )
    );

message_list_view.dart

Flexible(
      child: ListView.builder(
        controller: scrollController,
        shrinkWrap: true,
        reverse: false,
        itemCount: messages.length,
        itemBuilder: (context, i) {}
      )
    );

4 个答案:

答案 0 :(得分:0)

在您的脚手架中,将resizeToAvoidBottomPadding属性设置为false,然后尝试:

resizeToAvoidBottomInset : false,

答案 1 :(得分:0)

替换您的ListView

SingleChildScrollView和其中的Column

答案 2 :(得分:0)

我认为您应该将容器包装到SingleChildScrollView中,也许会对您有所帮助。我会这样写:

return SingleChildScrollView(
child: Container(
      height: MediaQuery.of(context).size.height,
      width: MediaQuery.of(context).size.width,
      child: Column(
        mainAxisAlignment: MainAxisAlignment.end,
        children: <Widget>[
          MessageListView(),
          ChatInputToolbar(),
        ]
      ),)
    );

答案 3 :(得分:0)

在小部件树的开头使用Scaffold小部件,它解决了我的问题