我正在制作一个聊天应用程序,问题是每当我打开键盘时,我无法滚动到页面的末尾,因此键盘隐藏了页面的一部分
它隐藏了这部分
body: Stack(
alignment: Alignment.bottomCenter,
children: [
GestureDetector(
onTap: () {
FocusManager.instance.primaryFocus?.unfocus();
},
child: ListView(
children: [
Container(
margin: EdgeInsets.all(10),
height: MediaQuery.of(context).size.height - 190 ,
child: ListView(
shrinkWrap: true,
reverse: true,
children: [
StreamBuilder(
stream: StreamFunction(),
builder: (context, snapshot) {
return ListView.builder(
shrinkWrap: true,
controller: _controller,
itemCount: messaging!.length,
itemBuilder: (context, i) {
if (messaging!.isNotEmpty ||
messaging != null) {
if ("${messaging![i]["from"]}" ==
"${snapshot.data}") {
return MyMessage(
"${messaging![i]["message"]}",
"${messaging![i]["timeNow"]}");
} else {
return OtherMessage(
"${messaging![i]["message"]}",
"${messaging![i]["timeNow"]}");
}
} else {
return Container();
}
});
}),
],
),
),
])),
Container(
margin: EdgeInsets.only(right:10, left:10),
height : 50,
width: double.infinity,
color: Colors.white,
child: Align(
alignment: Alignment.topCenter,
child: Row(
children: <Widget>[
GestureDetector(
onTap: () {},
child: Container(
height: 30,
width: 30,
decoration: BoxDecoration(
color: Colors.orange,
borderRadius: BorderRadius.circular(30),
),
child: Icon(
Icons.add,
color: Colors.white,
size: 20,
),
),
),
SizedBox(
width: 15,
),
Expanded(
child: TextField(
maxLines: null,
controller: msg,
decoration: InputDecoration(
hintText: "Write message...",
hintStyle: TextStyle(color: Colors.black54),
border: InputBorder.none),
),
),
SizedBox(
width: 15,
),
FloatingActionButton(
mini: true,
onPressed: () {
if (msg.text.isNotEmpty) {
sendMsg(msg.text, '$friendName');
msg.clear();
}
},
child: Icon(
Icons.send,
color: Colors.white,
size: 18,
),
backgroundColor: Colors.orange,
elevation: 0,
),
],
),
),
),
],
)
所以上面的代码是一个在Stack里面的列表视图,我不能在列表视图里面滚动,我用了shrikwrap,我试着把Stack Package 在一个列里面,但是得到了一个错误
2条答案
按热度按时间bxgwgixi1#
使用支架属性“resizeToAvoidBottomInset”
c9x0cxw02#
这是因为堆栈隐藏在键盘后面,使用这种树代替:
柱
..展开
...列表视图
发送消息小部件(将显示在底部