颤振不能在包含两个listview的屏幕中使用reordableListView

颤振不能在包含两个listview的屏幕中使用reordableListView,listview,flutter,dart,Listview,Flutter,Dart,这是我的代码,我有一个包含两个堆栈的行,每个堆栈都有一个列表视图,左侧小部件有一个包含reordablelistView的堆栈,但当拖动其中的一个元素时会出现此错误 Scaffold( body: Container( width: width, child: Row( children: <Widget>[ RightWidget(),// a listview Container(

这是我的代码,我有一个包含两个堆栈的行,每个堆栈都有一个列表视图,左侧小部件有一个包含reordablelistView的堆栈,但当拖动其中的一个元素时会出现此错误

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,
   ...
)