flutter - 可滚动的警报对话框颤振
问题描述
我正在努力使警报对话框在 Flutter 中可滚动。我已经尝试了几种方法,到目前为止,这是最有效的一种:
Widget _buildPopupDialog(BuildContext context) {
List<IconData> _iconsTable = [
Icons.build,
Icons.format_paint,
Icons.assignment,
Icons.group_work,
Icons.home,
Icons.feedback,
...
];
return new AlertDialog(
title: const Text('Popup example'),
content: Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.stretch,
children: <Widget>[
SingleChildScrollView(
child: Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.stretch,
children: <Widget>[
new Column(
children: new List.generate(26, (int index) {
return new Positioned(
child: new TableButtons(
iconData: _iconsTable[index]),
);
}),
),
],
),
),
],
),
目前,图标正在显示,但没有滚动。我收到的错误消息是:“A RenderFlex 在底部溢出了 170 像素。” 我想我必须使用 ListView 但我不确定在哪里添加它,因为它会导致错误。任何帮助,将不胜感激!
解决方案
你有很多只包含 1 个孩子的列,所以你必须清理一下你的代码:
Widget _buildPopupDialog(BuildContext context) {
List<IconData> _iconsTable = [
Icons.build,
Icons.format_paint,
Icons.assignment,
Icons.group_work,
Icons.home,
Icons.feedback,
...
];
return new AlertDialog(
title: const Text('Popup example'),
content: SingleChildScrollView(
child: new Column(
children: new List.generate(26, (int index) {
return new Positioned(
child: new TableButtons(
iconData: _iconsTable[index]),
);
}),
),
),
推荐阅读
- jquery - 如何使用ajax在数据库的div区域中显示前端的内容?
- javascript - 没有 Jquery 的 iframe 淡出事件
- ios - 显示 IAP 页面前的收据验证
- c# - Linq 进入数组,然后在数组中查找值并列出到组合框
- laravel - Laravel 5.5 Storage::url() 不使用 S3 返回所需的 url
- apache-spark - 为什么Spark强调schema、mem、storage解耦?
- objective-c - [NSKeyedArchiver archivedDataWithRootObject:在目标 c 上崩溃
- javascript - 如何使用 jquery 在页面加载时生成动态下拉列表?
- express - 在浏览器端缓存 Express REST 路由
- java - AttributeConverter convertToEntityAttribute 循环记录并总是得到空值?