getResultCode method
Get the (extended if available) result code.
This might involve parsing the sqlite native message to extract the code See https://www.sqlite.org/rescode.html for the list of result code.
iOS returns normal code while Android/ffi returns extended code for now The application should handle both.
Implementation
@override
int? getResultCode() => _resultCode ??= () {
final message = _message!.toLowerCase();
int? findCode(String patternPrefix) {
final index = message.indexOf(patternPrefix);
if (index != -1) {
try {
// Split at first space
var code = message
.substring(index + patternPrefix.length)
.trim()
.split(' ')[0];
// Find ending parenthesis if any
final endIndex = code.indexOf(')');
if (endIndex != -1) {
code = code.substring(0, endIndex);
}
final resultCode = int.tryParse(code);
if (resultCode != null) {
return resultCode;
}
} catch (_) {}
}
return null;
}
var code = findCode('(sqlite code ');
if (code != null) {
return code;
}
code = findCode('(code ');
if (code != null) {
return code;
}
// ios
code = findCode('code=');
if (code != null) {
return code;
}
return null;
}();