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-你处理好了吗?如果是,您是否愿意分享新签名?