query method

Future<List<Map<String, dynamic>>> query(
  1. String sql, [
  2. List? parameters
])

Implementation

Future<List<Map<String, dynamic>>> query(String sql, [List<dynamic>? parameters]) async {
  if (_db == null) {
    throw const FlutterSqliteException('Database not open');
  }

  try {
    final result = js_util.callMethod(_db, 'exec', [sql, parameters ?? []]);
    final List<dynamic> rows = js_util.getProperty(result, 'rows');

    return rows.map((row) {
      final Map<String, dynamic> rowMap = {};
      final keys = js_util.getProperty(row, 'keys') as List<dynamic>;
      final values = js_util.getProperty(row, 'values') as List<dynamic>;

      for (int i = 0; i < keys.length; i++) {
        rowMap[keys[i] as String] = values[i];
      }

      return rowMap;
    }).toList();
  } catch (e) {
    throw FlutterSqliteException('Failed to execute query: $e');
  }
}