- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
昨天问了一个关于在 AlertDialog 中显示 GridView 的非常相似的问题,并得到了将 Widget 包装在容器中并增加宽度的完美答案。现在我决定 SimpleDialog 会更好,以提供更多功能/自定义,即搜索文本字段和多个操作按钮。我在显示文本字段和 IconButton 时得到了想要的结果,但是当我尝试添加 GridView 时却出错了。我应用了以前的规则,但我遇到了类似的错误,其中 UI 消失但没有显示小部件。我试过为不同的小部件添加宽度,但没有成功。这是我的代码...
Future<Null> _neverSatisfied() async {
return showDialog<Null>(
context: context,
barrierDismissible: false, // user must tap button!
child: new SimpleDialog(
contentPadding: const EdgeInsets.all(10.0),
title: new Text(
'CHOOSE YOUR GIF PROFILE IMAGE',
style: new TextStyle(fontWeight: FontWeight.bold, color: Colors.blue),
textAlign: TextAlign.center,
),
children: <Widget>[
new Column(
mainAxisSize: MainAxisSize.max,
children: <Widget>[
new Row(
mainAxisAlignment: MainAxisAlignment.center,
mainAxisSize: MainAxisSize.min,
children: <Widget>[
new Padding(padding: new EdgeInsets.all(10.0)),
new Expanded(
child: new TextField(
decoration:
new InputDecoration(labelText: "SEARCH GIF'S"),
controller: _searchController,
onSubmitted: (str) {
setState(() {
str = _searchController.text;
});
})),
new Padding(padding: new EdgeInsets.all(2.0)),
new IconButton(
icon: new Icon(
Icons.search,
color: Colors.blue,
),
onPressed: () {
print('${_searchController.text}');
},
highlightColor: Colors.amber,
splashColor: Colors.amber,
iconSize: 25.0,
),
]),
new Padding(padding: new EdgeInsets.all(2.0)),
new Container(
// Specify some width
width: MediaQuery.of(context).size.width * .5,
child: new InkWell(
splashColor: Colors.blue,
onTap: null,
child: new GridView.count(
crossAxisCount: 4,
childAspectRatio: 1.0,
padding: const EdgeInsets.all(4.0),
mainAxisSpacing: 4.0,
crossAxisSpacing: 4.0,
children: <String>[
'http://www.for-example.org/img/main/forexamplelogo.png',
'http://www.for-example.org/img/main/forexamplelogo.png',
'http://www.for-example.org/img/main/forexamplelogo.png',
'http://www.for-example.org/img/main/forexamplelogo.png',
'http://www.for-example.org/img/main/forexamplelogo.png',
'http://www.for-example.org/img/main/forexamplelogo.png',
'http://www.for-example.org/img/main/forexamplelogo.png',
'http://www.for-example.org/img/main/forexamplelogo.png',
'http://www.for-example.org/img/main/forexamplelogo.png',
'http://www.for-example.org/img/main/forexamplelogo.png',
'http://www.for-example.org/img/main/forexamplelogo.png',
].map((String url) {
return new GridTile(
child: new Image.network(url, fit: BoxFit.cover, width: 12.0, height: 12.0,));
}).toList()),
)
),
new Padding(padding: new EdgeInsets.all(2.0)),
new IconButton(
splashColor: Colors.green,
icon: new Icon(
Icons.cancel,
color: Colors.blue,
),
onPressed: () {
Navigator.of(context).pop();
})
],
),
],
),
);
}
这是我的错误日志...
══╡ EXCEPTION CAUGHT BY RENDERING LIBRARY ╞═════════════════════════════════════════════════════════ The following assertion was thrown during performLayout(): RenderViewport does not support returning intrinsic dimensions. Calculating the intrinsic dimensions would require instantiating every child of the viewport, which defeats the point of viewports being lazy. If you are merely trying to shrink-wrap the viewport in the main axis direction, consider a RenderShrinkWrappingViewport render object (ShrinkWrappingViewport widget), which achieves that effect without implementing the intrinsic dimension API.
最佳答案
该错误本质上意味着存在可以增长的滚动区域或小部件,并且您试图在其中放置另一个滚动区域而不指定内部滚动区域的大小。当 flutter 试图计算各种事物的大小时,它不能,因为有两种不同的事物可以增长/收缩;特别是网格的垂直方向是你的问题。如果 gridview 计算了其所有子项的大小,则它可以根据该大小(如错误消息所述)对所有其余大小进行排序。但 gridview 的全部意义在于显示大量数据,这些数据很可能会滚出屏幕,因此如果要进行该计算,在使用 gridview 的正常情况下可能会减慢速度。
我敢打赌 AlertDialog 有高度限制和/或不滚动,这就是为什么您没有发现它的问题。
要解决您的问题,您有两种选择。如果您要拥有大量元素(如果您描述了您实际尝试制作的东西,它会帮助我回答),请继续使用 gridview,但只需为它所在的容器分配一个高度。那样对话框可以愉快地调整自己的大小,知道它所有 child 的高度,网格可以在你给定的高度范围内调整自己的大小(说实话,我不确定你是否需要再定义宽度)。
另一种选择,如果您没有大量项目(即它们或多或少会适合屏幕和/或您不希望它们滚动),请使用 wrap而不是直接布局所有项目的网格。这样做的好处是,当您的方向也发生变化时,它会很好地布置所有内容。
关于user-interface - Flutter - 如何在 SimpleDialog 框中显示 GridView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49435919/
对于我的元素,我需要在按下按钮时弹出一个图像。我正在尝试使用 SimpleDialog 插件,您可以在 here 上看到它.我在我的 HTML 中这样做 This shows standard, de
我创建了 SimpleDialog 和许多由数据列表生成的 SimpleDialogOptions ,是否可以检测到该 SimpleDialogOption 的索引?如果不是,我正在尝试在对话框中使用
我在尝试将变量传递到“简单对话框”框时一直在处理一些代码,但遇到了问题。但是,当我在 __init__ 部分中声明变量时,无法从类中的任何其他方法访问该变量。 我创建了一个简化的工作示例,其中我尝试将
我正在使用 simpledialog 库 ( http://dev.jtsage.com/jQM-SimpleDialog/ ) 并包含所有必要的 JS 和 CSS 文件,但是我无法显示弹出窗口。我究
我有这段代码: child: CircleAvatar( radius: 18, backgroundColor: Colors.white70,
在我的 Simpledialog 中将 snackbar 添加到按下方法时,我遇到了下面的错误代码。[使用不包含脚手架的上下文调用的 Scaffold.of()。] 我想就如何提供正确的上下文来解决它
在我的 Simpledialog 中将 snackbar 添加到按下方法时,我遇到了下面的错误代码。[使用不包含脚手架的上下文调用的 Scaffold.of()。] 我想就如何提供正确的上下文来解决它
我试图在点击 FloatingActionButton 后创建一个 SimpleDialog,但是当按下该按钮时没有任何反应。 我做错了什么? import "package:flutter/mate
我想使用以下代码在我的 Flutter 应用中显示一个带有 ListView.builder 的 SimpleDialog: showDialog( context: context, bui
JQuery Mobile simpledialog() 从页面中清除我的动态数据。 实际上我有一个列表,我正在使用 simpledialog 从中删除记录 迅速的。但这将清除我动态生成的列表,因此我
所以我尝试创建一个对话框,要求用户使用 python 的内置 Tkinter 库进行输入(数字)。特别是,我在谷歌上搜索到这可以通过 simpledialog.askinteger 方法轻松实现。 在
我正在使用 Flutter 构建 Android 应用程序。我在以编程方式关闭简单对话框时遇到问题。 现在我有一个名为 ListVessel 的有状态页面。此页面包含数组 otherVessels 中
昨天问了一个关于在 AlertDialog 中显示 GridView 的非常相似的问题,并得到了将 Widget 包装在容器中并增加宽度的完美答案。现在我决定 SimpleDialog 会更好,以提供
我在 Windows 7 上使用 Python 3.3。我有一个 tkinter一个应用Button启动 tkinter.simpledialog.Dialog .像这样(这是一个完整的、可运行的示例
我需要一种方法来在 SimpleDialog 上执行操作时关闭模态底部工作表,我有这样的东西: Widget _getActionsMenu() { return Container(
我正在寻找一种使用 JQMDateBox 选择多个日期的方法,我当前的解决方案有效,但我有一个事件委托(delegate)问题,我似乎无法解决。 申请我有一个输入框id=date,其中实现了日期框。我
在下面的代码中,第一个对话框立即获得焦点,因此用户只需键入答案并按 Enter。在第二个中,在 Windows 中运行时似乎不会发生这种情况。运行 Raspbian 9,两个窗口在打开时都会获得焦点。
我正在尝试使用 tkinter 创建一个简单的文本框。下面是我尝试使用的代码。 import tkinter as tk from tkinter import simpledialog root =
def prompt_new_name(self): new_name = simpledialog.askstring("Name Change", "New name") if n
我是一名优秀的程序员,十分优秀!