颤振不能在包含两个listview的屏幕中使用reordableListView
这是我的代码,我有一个包含两个堆栈的行,每个堆栈都有一个列表视图,左侧小部件有一个包含reordablelistView的堆栈,但当拖动其中的一个元素时会出现此错误颤振不能在包含两个listview的屏幕中使用reordableListView,listview,flutter,dart,Listview,Flutter,Dart,这是我的代码,我有一个包含两个堆栈的行,每个堆栈都有一个列表视图,左侧小部件有一个包含reordablelistView的堆栈,但当拖动其中的一个元素时会出现此错误 Scaffold( body: Container( width: width, child: Row( children: <Widget>[ RightWidget(),// a listview Container(
Scaffold(
body: Container(
width: width,
child: Row(
children: <Widget>[
RightWidget(),// a listview
Container(
width: 1.5,
color: Colors.grey,
),
LeftWidget()
],
),
),)
我在列表中使用它的小部件是
Widget _itemBuilder(BuildContext context, int count) {
print('video thumbnail build in listview');
return GestureDetector(
key: UniqueKey(),//new
onTap: () {
// Provider.of<ClassroomBlac>(context).setOptionView(context);//set options for view
//ToDo:if name dont update must refresh moves of class lenght
Provider.of<ClassroomBlac>(context,listen: false).setMoveIndex(count);
Provider.of<CheckOneRunVideo>(context,listen: false).setIndex(count);
if (Provider.of<ButtonAddStateBloc>(context).editingState)
Provider.of<ClassroomBlac>(context)
.classes[Provider.of<ClassroomBlac>(context).numberclass]
.moves[count]
.isselectedfor =
!Provider.of<ClassroomBlac>(context)
.classes[Provider.of<ClassroomBlac>(context).numberclass]
.moves[count]
.isselectedfor;
},
child: Container(
margin: EdgeInsets.only(bottom: 8),
child: VideoThumbnailItem(count),
));
}
Widget\u itemBuilder(BuildContext上下文,int计数){
打印(“在listview中生成视频缩略图”);
返回手势检测器(
key:UniqueKey(),//新建
onTap:(){
//Provider.of(context).setOptionView(context);//为视图设置选项
//ToDo:如果名称不更新,则必须刷新类长度的移动
Provider.of(context,listen:false).setMoveIndex(count);
Provider.of(context,listen:false).setIndex(count);
if(Provider.of(context.editingState)
提供者(上下文)
.classes[提供程序(上下文).numberclass]
.移动[计数]
.我被选为=
!Provider.of(上下文)
.classes[提供程序(上下文).numberclass]
.移动[计数]
.被选为;
},
子:容器(
页边距:仅限边集(底部:8),
子项:VideoThumbnailItem(计数),
));
}
如果我使用contoroller,请帮助我如果是,如何正确生成列表项?
什么是不正确的
当我对包含listview的leftWidget()进行注释时,我的代码工作正常解决这类问题的一个常见方法是为您的
可滚动
分配一个控制器。
不幸的是,ReorderableListView
没有为此包含公共属性
我知道的最好的解决方案是将您的ReorderableListView
(仅此)包装在PrimaryScrollController
中,并给它一个ScrollController。它之所以有效,是因为ReorderableListView
将其上下文的primarycrollcontroller
分配给其私有\u scrollController
return PrimaryScrollController(
controller: myScrollController,
child: ReorderableListView(...),
);
另一个不那么优雅的选项是重写ReorderableListView小部件,并在构造函数中公开scrollController属性。解决此类问题的常见方法是将控制器分配给您的Scrollable
。
不幸的是,ReorderableListView
没有为此包含公共属性
我知道的最好的解决方案是将您的ReorderableListView
(仅此)包装在PrimaryScrollController
中,并给它一个ScrollController。它之所以有效,是因为ReorderableListView
将其上下文的primarycrollcontroller
分配给其私有\u scrollController
return PrimaryScrollController(
controller: myScrollController,
child: ReorderableListView(...),
);
另一个不那么优雅的选项是重写ReorderableListView小部件并在构造函数中公开scrollController属性。遇到此问题时不确定是否存在此问题,但现在有了scrollController属性
因此,像这样声明您的scrollController:
final ScrollController reorderScrollController = ScrollController();
然后将该唯一的scrollController分配给您的ReorderableListView:
ReorderableListView(
scrollController: reorderScrollController,
...
)
不确定遇到此问题时是否存在此问题,但现在具有scrollController属性
因此,像这样声明您的scrollController:
final ScrollController reorderScrollController = ScrollController();
然后将该唯一的scrollController分配给您的ReorderableListView:
ReorderableListView(
scrollController: reorderScrollController,
...
)