Tienes que agregar async a tu función.
await database.transaction((txn) async { });También reemplazaría then / catchError dentro de la función con await y try/catch.
Si la función usa async-await, entonces debe usar Future
Future<void> -> la función es futura y return null
Future<String> -> la función es futura y return String como salida
En lo anterior, puede reemplazar Future<_> por el tipo de retorno que espera. Creo que debe devolver int, ayudará a saber en qué fila se realiza la operación CRUD