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
Dart 在颤振中向计算函数发送多个参数_Dart_Flutter - Fatal编程技术网

Dart 在颤振中向计算函数发送多个参数

Dart 在颤振中向计算函数发送多个参数,dart,flutter,Dart,Flutter,我试图在颤振中使用计算函数 void _blockPressHandler(int row, int col) async { // Called when user clicks any block on the sudoku board . row and col are the corresponding row and col values ; setState(() { widget.selCol = col; } }); boo

我试图在颤振中使用计算函数

void _blockPressHandler(int row, int col) async {
//    Called when user clicks any block on the sudoku board . row and col are the corresponding row and col values ;
    setState(() {
      widget.selCol = col;
      }
    });

    bool boardSolvable;
    boardSolvable = await compute(SudokuAlgorithm.isBoardInSudoku , widget.board , widget.size) ;

  }
isdoku
是类数独算法的静态方法。它存在于另一个文件中。写上面的代码,告诉我

错误:参数类型“(列表,int)→ bool“无法分配给参数类型”(列表)→ 布尔'。(参数类型不可分配于[just_sudoku]lib/sudoku/sudoku page.dart:161)

我该如何解决这个问题?在不将SudokuAlgorithm类的方法从其文件中带出的情况下,是否可以做到这一点?如何向计算函数发送多个参数

静态bool-isboardinsouku(Listboard,int-size){}
是我的isboardinsouku函数


只需将参数放在映射中,并传递它即可


无法将多个参数传递给
compute
,因为这是一个方便的函数,它只允许一个参数。

使用映射。以下是一个例子:

Map map = Map();
map['val1'] = val1;
map['val2'] = val2;
Future future1 = compute(longOp, map);


Future<double> longOp(map) async {
  var val1 = map['val1'];
  var val2 = map['val2'];
   ...
}
Map-Map=Map();
map['val1']=val1;
map['val2']=val2;
未来1=计算(longOp,map);
未来远程操作(映射)异步{
var val1=map['val1'];
var val2=map['val2'];
...
}

在OOP和一般情况下,为包含所需字段的类创建一个
类更为优雅,这为键名的硬编码字符串或常量提供了更大的灵活性和更少的麻烦

例如:

boardSolvable=wait compute(SudokuAlgorithm.isboardinsouku,widget.board,widget.size)

取代

class BoardSize{
  final int board;
  final int size;
  BoardSize(this.board, this.size);
}

...

boardSolvable = await compute(SudokuAlgorithm.isBoardInSudoku, BoardSize(widget.board, widget.size)) ;
使用

以下是我的应用程序中的一些示例代码:

  @override
  Future logChange(
      String recordId, AttributeValue newValue, DateTime dateTime) async {
    await compute(
        logChangeNoCompute, Tuple2<String, AttributeValue>(recordId, newValue));
  }

  Future<void> logChangeNoCompute(Tuple2<String, AttributeValue> tuple) async {
    _recordsById[tuple.item1]!.setAttributeValue(tuple.item2);
    await storage.setItem(AssetsFileName, toJson());
  }
@覆盖
未来日志更改(
字符串recordId、AttributeValue newValue、DateTime(日期时间)异步{
等待计算(
logChangeNoCompute,Tuple2(recordId,newValue));
}
未来logChangeNoCompute(Tuple2 tuple)异步{
_recordsById[tuple.item1]!.setAttributeValue(tuple.item2);
wait storage.setItem(assetfilename,toJson());
}

你能展示一下
isboardinsouku
函数声明的样子吗?我已经编辑了我的问题@tomwyr@natesh-bhat-你处理好了吗?如果是,您是否愿意分享新签名?