Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dart 拖放列表-方法';呼叫';被调用为空_Dart_Flutter - Fatal编程技术网

Dart 拖放列表-方法';呼叫';被调用为空

Dart 拖放列表-方法';呼叫';被调用为空,dart,flutter,Dart,Flutter,我正在尝试使用flatter\u list\u拖放0.1.6创建一个拖放列表。我已经寻找了如何实现它的例子,但是还没有具体的例子,所以大部分都是反复试验。无论如何,当我运行应用程序时,在尝试拖动列表视图的MyDragTables之一时会出现错误。上面写着“由手势捕获的异常”,“在处理手势时引发了以下NoSuchMethodError:方法'call'被调用为null”,“Receiver:null”,“Tested call:call”(偏移量的实例)) 我已经尝试过调试,但无法找到崩溃的确切位

我正在尝试使用
flatter\u list\u拖放0.1.6
创建一个拖放列表。我已经寻找了如何实现它的例子,但是还没有具体的例子,所以大部分都是反复试验。无论如何,当我运行应用程序时,在尝试拖动列表视图的MyDragTables之一时会出现错误。上面写着“由手势捕获的异常”,“在处理手势时引发了以下NoSuchMethodError:方法'call'被调用为null”,“Receiver:null”,“Tested call:call”(偏移量的实例))

我已经尝试过调试,但无法找到崩溃的确切位置。对于可拖动小部件的反馈正在出现,但仍然保持不变

```
       Widget _buildDragDrop(double _screenHeight, double _screenWidth){
        return DragAndDropList(_nonDelList.getList(),
          canBeDraggedTo: (int i, int j) {
            print("drag to");
            // _nonDelList.changePos(_nonDelList.getTaskAt(i), j);
            return true;
          },
          itemBuilder: (BuildContext _context, Task _t1) {
            print('Entered Item Builder');
            return _buildTask(_t1, _screenHeight, _screenWidth);
          },
          onDragFinish: (int i, int j){
            print('Drag finished');
             _nonDelList.changePos(_nonDelList.getTaskAt(i), j);
            print('Drag finished 2');
          },
          dragElevation: 1.5,
        );
      }

       Widget _buildTask(Task _t, double _screenHeight, double 
         _screenWidth){
        final bool alreadyCompleted = !(_t.getPressed());
           return new MyDraggable(
             child: new ListTile(
               title: new Text(_t.getEntry()),
               trailing: new Icon(
                 alreadyCompleted ? Icons.check_box : 
                    Icons.check_box_outline_blank,
                 color: alreadyCompleted ? _t.getColor() : Colors.black,
               ),
               subtitle: new Text(_t.getDescription()),
             ),
             onDragStarted: (){
               print('Started Drag');
             },
             onMyDraggableCanceled: (Velocity v, Offset o){
               print('Drag Canceled');
             },
             feedback: Material(
               shape: CircleBorder(),
               child: new InkResponse(
                 child: Container(
                   width: _screenWidth / 15.0,
                   height: _screenWidth / 15.0,
                   color: Colors.red,
                 ),
               ),
             ),
           );
         }
```
我希望列表磁贴能够拖放到位。但是,唯一发生的事情是,当我开始拖动时,我的反馈出现在列表磁贴的左上角,然后这个错误会立即显示出来。此外,“开始拖动”和“拖动取消”不会打印出来,唯一正在打印的是“输入项生成器”

我欢迎并感谢所有的帮助

提前谢谢

编辑(堆栈跟踪)

I/颤振(2974):══╡ 用手势捕捉异常╞═══════════════════════════════════════════════════════════════════
I/flatter(2974):处理手势时抛出以下NoSuchMethodError:
I/flatter(2974):在null上调用了方法“call”。
I/颤振(2974):接收器:空
I/flatter(2974):尝试调用:调用(“偏移量”的实例)
I/颤振(2974):
I/flatter(2974):抛出异常时,这是堆栈:
I/flatter(2974):#0 Object.noSuchMethod(dart:core/runtime/libobject_patch.dart:50:5)
I/颤振(2974):#1 DragAvatar.updateDrag
包装:颤振列表拖放/我的拖动。省道:547
我/弗利特(2974):#2辆新德拉加瓦塔
包装:颤振列表拖放/我的拖动。省道:498
I/颤振(2974):#3 MyDragableState._startDrag
包装:颤振列表拖放/我的拖动。省道:328
I/颤振(2974):#4个多Draggesturererecognizer.#U startDrag。
软件包:颤振/../signatures/multidrag.dart:263
I/flatter(2974):#5个手势识别器.invokeCallback
软件包:flatter/../signatures/recognizer.dart:120
I/颤振(2974):#6个多德拉格结构识别器。#U startDrag
软件包:颤振/../signatures/multidrag.dart:263
I/flatter(2974):#7 MultiDraggesturererecognizer.accept手势。
软件包:颤振/../signatures/multidrag.dart:253
我/弗利特(2974):#8#立即接受州际协议
软件包:颤振/../signatures/multidrag.dart:315
I/颤振(2974):#9 MultiDraggesturererecognizer.accept手势
软件包:颤振/../signatures/multidrag.dart:253
I/颤振(2974):#10个手势是管理者。#
套装:颤振/../signatures/arena.dart:263
我/弗利特(2974):#11个手势是管理者。#
套装:颤振/../signatures/arena.dart:222
I/颤振(2974):#12手势arenaentry.resolve
套装:颤振/../signatures/arena.飞镖:52
I/颤振(2974):#13 MultiDragPointerState.resolve
程序包:颤振/../signatures/multidrag.dart:62
I/颤振(2974):#14#立即跨州。移动后检查解决方案
软件包:颤振/../signatures/multidrag.dart:310
I/颤振(2974):#15多个牵引点状态。#
软件包:颤振/../signatures/multidrag.dart:81
I/颤振(2974):#16多道雷达识别器。#
软件包:颤振/../signatures/multidrag.dart:227
I/颤振(2974):#17点外部。#
包装:颤振/../signatures/pointer\u路由器。省道:73
I/颤振(2974):#18点外部路径
软件包:flatter/../signatures/pointer\u router.dart:101
I/颤振(2974):35; 19#WidgetsFlutterBinding&BindingBase&GestureBinding.handleEvent
包裹:颤振/../signatures/binding.dart:214
I/颤振(2974):#20#WidgetsFlutterBinding&BindingBase&GestureBinding.dispatchEvent
软件包:flatter/../signatures/binding.dart:192
I/颤振(2974):21 _WidgetsFlutterBinding&BindingBase&GestureBinding._handlePointerEvent
包装:颤振/../signatures/binding.dart:149
I/颤振(2974):#22#WidgetsFlutterBinding&BindingBase&GestureBinding.#flushPointerEventQueue
I/颤振(2974):#23#WidgetsFlutterBinding&BindingBase&GestureBinding.#HandlePointerData数据包
包装:颤振/../signatures/binding.省道:85
I/flatter(2974):#27 invoke1(省道:ui/hooks.dart:223:10)
I/flatter(2974):#28 dispatchPointerDataPacket(dart:ui/hooks.dart:144:5)
I/颤振(2974):(从包dart中删除3帧:异步)
I/颤振(2974):
I/颤振(2974):处理程序:启动
I/颤振(2974):识别器:
I/颤振(2974):即时多重雷达识别器#774eb
堆栈跟踪显示:

I/flutter ( 2974): When the exception was thrown, this was the stack:
I/flutter ( 2974): #0      Object.noSuchMethod (dart:core/runtime/libobject_patch.dart:50:5)
I/flutter ( 2974): #1      DragAvatar.updateDrag
package:flutter_list_drag_and_drop/my_draggable.dart:547

OK,因此出现了空指针异常。让我们来看一下:

这符合错误消息,即:

I/flutter ( 2974): Tried calling: call(Instance of 'Offset')
因此,
globalPosition
很可能是一个
Offset
,而
onMove
必须是一个对象。让我们在应该设置
onMove
的代码中搜索:

DragAvatar({
    @required this.overlayState,
    ...
    this.onMove,
()

其中(省略一些步骤)似乎是从以下方面获得的:

 const MyDraggable({
    Key key,
    @required this.child,
    @required this.feedback,
    ...
    this.onMove
()

我看不到其他地方设置了
onMove
。看起来可能有一个bug,
DragAvatar.updateDrag
无条件地调用
onMove
onMove
最初没有标记
@required
,或者
onMove
没有初始化为默认值

无论如何,在构造
MyDraggable
时,请尝试提供一个
onMove
回调


(或者,也许考虑使用Page页面所指的官方)。

我有这样的感觉,问题在于<代码> MyDrababely。
DragAvatar({
    @required this.overlayState,
    ...
    this.onMove,
 const MyDraggable({
    Key key,
    @required this.child,
    @required this.feedback,
    ...
    this.onMove