Flutter - 带有嵌套在 expansiontile 中的 Listview 的可重新排序列表
Flutter - Reorderable List with a Listview nested inside expansiontile
我正在尝试使用可重新排序的列表视图构建一个示例,该列表视图的子项是扩展磁贴。
展开图块后,它将向用户显示一个列表视图,如下所示
Expanded tile with listview nested inside
当所有扩展图块都折叠时,我可以通过长按并移动它来重新排序图块。但是如果其中一个 tiles 被展开,并且用户尝试重新排序 tiles,flutter 将抛出以下错误并且展开的 tile 将无法折叠直到热重载
ScrollController attached to multiple scroll views.
'package:flutter/src/widgets/scroll_controller.dart':
Failed assertion: line 111 pos 12: '_positions.length == 1'
Not Collapsible listview
我该如何修复它?问题似乎源于将滚动控制器嵌套在另一个滚动控制器中。有没有办法在长按时强制所有扩展块折叠?
提前致谢
List<int> a = [1, 2, 3];
class _BlankPageState extends State<BlankPage> {
@override
Widget build(BuildContext context) {
return SafeArea(
child: Scaffold(
body: Padding(
padding: EdgeInsets.all(10),
child: ReorderableListView(
onReorder: (oldIndex, newIndex) {
print('now');
setState(
() {
if (newIndex > oldIndex) {
newIndex -= 1;
}
final int item = a.removeAt(oldIndex);
a.insert(newIndex, item);
},
);
},
children: a.map((index) {
return ExpansionTile(
backgroundColor: Colors.grey,
key: Key('$index'),
title: Text('Tile' + '${index.toString()}'),
children: <Widget>[
Container(
height: 100,
child: ListView(children: <Widget>[
Text('This is a test' + '$index'),
Text('This is a test' + '$index'),
]),
)
],
);
}).toList()),
),
),
);
我可以通过引入以下内容的新版本 Flutter 1.17 解决上述问题
Flutter 1.17.0 的更改日志
49148 在 ReorderableListView
中公开了可选的滚动控制器 属性
通过在我的 reorderablelistview 中添加滚动控制器,当列表视图嵌套在 reorderablelistview 小部件中时,我不再遇到上面的多个滚动视图错误
ReorderableListView(
scrollController: ScrollController(initialScrollOffset: 50),
我正在尝试使用可重新排序的列表视图构建一个示例,该列表视图的子项是扩展磁贴。 展开图块后,它将向用户显示一个列表视图,如下所示 Expanded tile with listview nested inside
当所有扩展图块都折叠时,我可以通过长按并移动它来重新排序图块。但是如果其中一个 tiles 被展开,并且用户尝试重新排序 tiles,flutter 将抛出以下错误并且展开的 tile 将无法折叠直到热重载
ScrollController attached to multiple scroll views.
'package:flutter/src/widgets/scroll_controller.dart':
Failed assertion: line 111 pos 12: '_positions.length == 1'
Not Collapsible listview
我该如何修复它?问题似乎源于将滚动控制器嵌套在另一个滚动控制器中。有没有办法在长按时强制所有扩展块折叠? 提前致谢
List<int> a = [1, 2, 3];
class _BlankPageState extends State<BlankPage> {
@override
Widget build(BuildContext context) {
return SafeArea(
child: Scaffold(
body: Padding(
padding: EdgeInsets.all(10),
child: ReorderableListView(
onReorder: (oldIndex, newIndex) {
print('now');
setState(
() {
if (newIndex > oldIndex) {
newIndex -= 1;
}
final int item = a.removeAt(oldIndex);
a.insert(newIndex, item);
},
);
},
children: a.map((index) {
return ExpansionTile(
backgroundColor: Colors.grey,
key: Key('$index'),
title: Text('Tile' + '${index.toString()}'),
children: <Widget>[
Container(
height: 100,
child: ListView(children: <Widget>[
Text('This is a test' + '$index'),
Text('This is a test' + '$index'),
]),
)
],
);
}).toList()),
),
),
);
我可以通过引入以下内容的新版本 Flutter 1.17 解决上述问题
Flutter 1.17.0 的更改日志
49148 在 ReorderableListView
中公开了可选的滚动控制器 属性通过在我的 reorderablelistview 中添加滚动控制器,当列表视图嵌套在 reorderablelistview 小部件中时,我不再遇到上面的多个滚动视图错误
ReorderableListView(
scrollController: ScrollController(initialScrollOffset: 50),