- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我有一个模态底页,我想在其中放置扩展列表。为此,我创建了一个类来为我的 ExpansionPanelList
创建项目。
class FilterItem {
bool isExpanded;
final String header;
final Widget body;
FilterItem(this.isExpanded, this.header, this.body);
}
我只是为每个项目提供 isExpanded
bool 值来判断它最初是否展开,ExpansionPanel
的标题(按预期工作)和扩展面板
。
我有一个这样的项目列表:
items = <FilterItem>[
new FilterItem(
false,
'Bit Size',
GridView.builder(
shrinkWrap: true,
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 3),
itemCount: _docs["Bit Size"].length,
itemBuilder: (context,index) {
return Text(_docs["Bit Size"].elementAt(index),style:TextStyle(color:Colors.black));
},
)
),
];
我现在正在测试一个项目,它的主体是一个 GridView
,我没有机会测试它是否正确显示,因为 ExpansionPanel
不起作用。
项目的这个
List
与 showModalBottomSheet() 方法
中的 ExpansionPanelList
一起使用,我使用按钮调用该方法。这是方法的主体:
showModalBottomSheet(
context: context,
builder: (context) {
return ListView.builder(
shrinkWrap: true,
itemCount: (items.length == null) ? 0:items.length,
itemBuilder: (context,index) {
return ExpansionPanelList(
expansionCallback: (int index, bool isExpanded) {
setState(() {
items[index].isExpanded = !items[index].isExpanded;
});
},
children: items.map((FilterItem item) {
print("b");
return ExpansionPanel(
headerBuilder: (BuildContext context, bool isExpanded) {
return ListTile(
title: new Text(
item.header,
textAlign: TextAlign.left,
style: new TextStyle(
fontSize: 20.0,
fontWeight: FontWeight.w400,
),
));
},
isExpanded: item.isExpanded,
body: item.body,
);
}).toList(),
);
},
);
},
isScrollControlled: true,
);
如您所见,我已将 ExpansionPanel
的 isExpanded
属性设置为列表中项目的值,并在 ExpansionPanelList
回调,我在 setState
中更新它。
这就是问题所在,展开不起作用。我在这里做错了什么?
最佳答案
要更新 Bottom Sheet 中的状态,您需要像 StatefulBuilder 一样包装返回的小部件
showModalBottomSheet(
context: context,
builder: (BuildContext context) {
return StatefulBuilder(
builder: (BuildContext context,StateSetter setStateOfBottomSheet) {
return Column(
children: <Widget>[
FlatButton(
onPressed: () {
setStateOfBottomSheet;
},
child: Text('Hello'))
],
);
},
);
});
然后你可以调用我在之前代码中命名的这个对象:setStateOfBottomSheet当您调用它时,您可以更新底部工作表的状态
关于modalBottomSheet 内的 Flutter ExpansionPanelList 不更新状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57328094/
在下面的 flutter ExpansionPanelList 小部件中,我试图将白色背景着色为其他颜色,例如 indigo,我找不到任何文档或有用的链接来实现那个 ExpansionPanelLis
我在 Tab() 中使用 ExpansionPanel()。 ExpansionPanel() 正确显示。但是它的 isExpanded 属性永远不会改变(是的,我有一行应该改变它)使得它不可能折叠或
我通过使用 Provider 包而不是使 Widget 成为 statefulWidget 来实现 ExpansionPanelList。但是,expansionCallback 永远无法正常工作。如
我是 flutter 的新手,并且在 flutter 的样式方式上有些挣扎(从没想过我会这么说,但我想念 css)。我制作了一个 ExpansionPanelList 并且我想在标题之间添加间距,以便
我试图像小部件一样列出下拉列表,但幸运的是找到了扩展面板列表小部件来获得我想要的用户体验。 所以,我在我的 flutter 应用程序中使用 ExpansionPanelList,但不需要它附带的默认高
在 ExpansionPanelList 中,我在展开/折叠小部件时遇到重建小部件的问题。 问题出在这里: expansionCallback: (int index, bool isExpanded
我有一个模态底页,我想在其中放置扩展列表。为此,我创建了一个类来为我的 ExpansionPanelList 创建项目。 class FilterItem { bool isExpanded;
我是 Flutter 的新手,所以我正在努力学习。但我一直在创建一个带有 ExpansionPanel 的 ExpansionPanelList。就像标题所说的那样,所有这些都是在谷歌的 Flutte
Flutter 的扩展面板列表 ( https://docs.flutter.io/flutter/material/ExpansionPanelList-class.html ) 没有装饰。如何创建
在 ExpansionPanelList 的 ListTile 中,试用已经作为向下箭头给出,当 ListTile 展开时,箭头变为向上箭头。 但是,它的颜色很深。我添加了尾随:图标(blah bla
我是一名优秀的程序员,十分优秀!