generate method
Generates a new puzzle using parameters set in _options
Implementation
Future<bool> generate() async {
if (_board != null) GenerationException('Board already generated');
await _solver.solve();
_board = deepClone(_solver.solvedBoard());
if (_options!.patternName!.toLowerCase() == "random") {
_patterner.buildGridFromRandom(_board, _options!.clues!);
} else {
_patterner.buildGridFromPattern(_board, _options!.patternName);
}
_board!.startListening();
_boardChangeStreamSub =
_board!.change.listen((cell) => _onBoardChange(cell));
return true;
}