flutter - ListView 构建器在自动完成小部件中消耗的空间超过了必要的空间
问题描述
我正在寻找一个带有建议选项小部件的简单文本字段。从api.flutter.dev找到这个示例代码。我跟着它,出于某种原因,ListView 构建器在列表构建的开头一直留下大量空间。
切换到 RawAutoComplete 不起作用。将其切换到 ListView 会得到相同的结果。Flutter 检查器只是跳过该部分。
这是我的代码:
class First extends StatefulWidget {
const First({Key? key}) : super(key: key);
@override
_FirstState createState() => _FirstState();
}
class _FirstState extends State<First> {
List<String> rise = ["rise","rose","petal","dandelion"];
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(),
body: _first(),
);
}
_first(){
return Center(
child: Autocomplete<String>(
optionsBuilder: (TextEditingValue textController) {
if (textController.text == '') {
return rise;
}
return rise.where((String option) {
return option.contains(textController.text.toLowerCase());
});
},
optionsViewBuilder: (BuildContext context,
AutocompleteOnSelected<String> onSelected,
Iterable<String> options) {
return Align(
alignment: Alignment.topLeft,
child: Material(
elevation: 4.0,
child: Container(
width: 400,
color: Colors.blue,
child: ListView.builder(
shrinkWrap: true,
itemCount: rise.length,
itemBuilder: (BuildContext context, index){
return GestureDetector(
onTap: () {
onSelected(rise[index]);
},
child: ListTile(
title: Text(rise[index]),
),
);
},
),
),
),
);
},
onSelected: (string) {},
),
);
}
}
这是图片
这是检查员的“显示指南”选项
解决方案
https://api.flutter.dev/flutter/widgets/ListView-class.html
默认情况下,ListView 将自动填充列表的可滚动末端,以避免 MediaQuery 填充指示的部分障碍。为避免此行为,请使用零填充属性覆盖。
因此,您可以删除 ListView 的顶部填充。
...
MediaQuery.removePadding(
context: context,
removeTop: true,
child: ListView(
...
推荐阅读
- html - AngularJS HTML 编辑器留下所有标签
- javascript - 在 vue 中构建音频播放器;如何在更改绑定后开始播放音频:src?
- react-native - setTimeout 将我的应用程序冻结在本机反应中
- ms-office - 提交带有自定义功能的加载项(更新?)
- apache-spark - Kafka 生产者 - 发送消息列表
- python-3.x - 如何向用户发送不同的消息
- typescript - 量角器使用setter填充几个元素
- postgresql - Postgresql 返回值减少余额
- android - Android Retrofit 获取空值
- c++ - sqlConnection->Open() 不起作用