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
Flutter 交换网格并使用颤振计算移动_Flutter_Dart_Gridview - Fatal编程技术网

Flutter 交换网格并使用颤振计算移动

Flutter 交换网格并使用颤振计算移动,flutter,dart,gridview,Flutter,Dart,Gridview,这里是飞镖的第一步。我正在做一个小游戏,我需要做一个格子物品交换位置,并计算每个动作。 我想要的是:如果我将一个项目从网格的一个单元格中移动(比如a[0][0]到a[0][1]),那么单元格中的项目将转到项目移动的单元格中(a[0][0]),并计算移动量。 我知道(可拖动部分): Widget buildGridItems(BuildContext上下文,int索引){ int gridStateLength=gridState.length; int x,y=0; x=(索引/gridStat

这里是飞镖的第一步。我正在做一个小游戏,我需要做一个格子物品交换位置,并计算每个动作。 我想要的是:如果我将一个项目从网格的一个单元格中移动(比如a[0][0]到a[0][1]),那么单元格中的项目将转到项目移动的单元格中(a[0][0]),并计算移动量。 我知道(可拖动部分):

Widget buildGridItems(BuildContext上下文,int索引){
int gridStateLength=gridState.length;
int x,y=0;
x=(索引/gridStateLength).floor();
y=(索引%gridStateLength);
GlobalKey gridItemKey=新的GlobalKey();
回拖式(
孩子:格子(
键:gridItemKey,
儿童:货柜(
装饰:盒子装饰(
边框:边框。全部(颜色:颜色。灰色,宽度:0.5),
),
子对象:中心(子对象:buildGridItem(x,y)),
),
),
反馈:图标(图标。地形,颜色:Colors.blue,大小:80.0),
);
}
小部件buildGridItem(int x,int y){
开关(网格状态[x][y]){
案例“0”:
返回图标(图标。地形,颜色:Colors.brown,大小:80.0);
打破
案例“1”:
返回图标(图标。移除红色眼睛,颜色:Colors.red,大小:80.0);
打破
案例“2”:
返回图标(Icons.home,颜色:Colors.blue,大小:80.0);
打破
案例“3”:
返回图标(图标。相册,颜色:Colors.yellow,大小:80.0);
打破
案例“4”:
//…为了简洁而隐藏
违约:
返回文本(gridState[x][y].toString());
}  
}

但我不知道如何从那里开始,因为当目标是网格的每一部分时,我如何才能放置DragTarget?

我试图使用RenderBox获得位置(x,y)并操纵每个网格单元,但没有运气。注意:每次中断时,我都会收到死代码警告;上面代码的语句。为什么会发生这种情况?