j'ai une bd flutter : 
import 'package:path/path.dart';
import 'package:sqflite/sqflite.dart';

class SqliteService {
  Future<void> onCreate(Database db, int version) async {
    await db.execute("""
          CREATE TABLE Aventure (
            idAventure INTEGER PRIMARY KEY AUTOINCREMENT, 
            nomJoueur TEXT NOT NULL
          )
        """);
    await db.execute("""
          CREATE TABLE Difficulte (
            idDifficulte INTEGER PRIMARY KEY AUTOINCREMENT, 
            nom TEXT NOT NULL, 
            nbTentative INTEGER NOT NULL, 
            valeurMax INTEGER NOT NULL
          )
        """);
    await db.execute("""
          CREATE TABLE Niveau (
            idNiveau INTEGER PRIMARY KEY AUTOINCREMENT, 
            palier INTEGER NOT NULL, 
            idDifficulte INTEGER NOT NULL,
            idAventure INTEGER NOT NULL,
            FOREIGN KEY(idDifficulte) REFERENCES Difficulte(idDifficulte),
            FOREIGN KEY(idAventure) REFERENCES Aventure(idAventure)
          )
        """);
    await db.execute("""
          CREATE TABLE Partie (
            idPartie INTEGER PRIMARY KEY AUTOINCREMENT, 
            score INTEGER NOT NULL, 
            nbMystere INTEGER NOT NULL, 
            nbEssaisJoueur INTEGER NOT NULL, 
            gagne INTEGER NOT NULL, 
            dateDebut TEXT NOT NULL, 
            dateFin TEXT NOT NULL,
            idAventure INTEGER,
            idNiveau INTEGER,
            FOREIGN KEY(idAventure) REFERENCES Aventure(idAventure),
            FOREIGN KEY(idNiveau) REFERENCES Niveau(idNiveau)
          )
        """);
    await db.execute("""
          CREATE TABLE Effectuer (
            idAventure INTEGER NOT NULL, 
            idPartie INTEGER NOT NULL, 
            idNiveau INTEGER NOT NULL, 
            complete INTEGER NOT NULL,
            PRIMARY KEY(idAventure, idPartie, idNiveau),
            FOREIGN KEY(idAventure) REFERENCES Aventure(idAventure),
            FOREIGN KEY(idPartie) REFERENCES Partie(idPartie),
            FOREIGN KEY(idNiveau) REFERENCES Niveau(idNiveau)
          )
        """);
  }

  Future<Database> initializeDB() async {
    return openDatabase(
      join(await getDatabasesPath(), 'aventure.db'),
      onCreate: onCreate,
      onUpgrade: (db, oldVersion, newVersion) async {
        // Supprime les tables
        await db.execute("DROP TABLE IF EXISTS Aventure");
        await db.execute("DROP TABLE IF EXISTS Difficulte");
        await db.execute("DROP TABLE IF EXISTS Niveau");
        await db.execute("DROP TABLE IF EXISTS Partie");
        await db.execute("DROP TABLE IF EXISTS Effectuer");

        // Recrée les tables
        await onCreate(db, newVersion);

        print('Database upgraded from $oldVersion to $newVersion');
      },
      version: 3,
    );
  }
}
et je veux faire une requête qui me permet d'écrire dans une page le prochain niveau d'une aventure, ou si une aventure est terminée : 
import 'package:flutter/material.dart';
import 'package:mobile_tp/models/Aventure.dart';
import 'package:mobile_tp/screens/PageNiveaux.dart';
import 'package:sqflite/sqflite.dart';
import 'package:mobile_tp/services/AventureDB.dart';

class PageAventures extends StatefulWidget {
  final Future<Database> database;

  PageAventures({Key? key, required this.database}) : super(key: key);

  @override
  _PageAventuresState createState() => _PageAventuresState();
}

class _PageAventuresState extends State<PageAventures> {
  List<Aventure> aventures = [];
  late AventureDB aventureDB;

  @override
  void initState() {
    super.initState();
    aventureDB = AventureDB(database: widget.database);
    loadAventures();
  }

  Future<void> loadAventures() async {
    final aventureList = await aventureDB.getAll();
    setState(() {
      aventures = aventureList;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Le nombre magique'),
        centerTitle: true,
      ),
      body: Center(
        child: SingleChildScrollView(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              Text(
                'Choisissez votre aventure',
                style: TextStyle(fontSize: 24, fontWeight: FontWeight.bold),
                textAlign: TextAlign.center,
              ),
              ...aventures.map((aventure) {
                return FutureBuilder<int>(
                  future: aventureDB.getNextLevel(aventure.id ?? 0),
                  builder: (context, snapshot) {
                    if (snapshot.connectionState == ConnectionState.waiting) {
                      return CircularProgressIndicator();
                    } else if (snapshot.hasError) {
                      return Text('Erreur : ${snapshot.error}');
                    } else {
                      int nextLevel = snapshot.data ?? 11;
                      String status = nextLevel <= 10 ? 'En cours' : 'Terminée';
                      print('Prochain niveau pour l\'aventure ${aventure.id}: $nextLevel');  // Ajout du print ici
                      String message = status == 'En cours'
                          ? 'Prochain niveau : $nextLevel'
                          : 'Terminée';

                      return Card(
                        child: ListTile(
                          title: Center(child: Text(aventure.nomJoueur)),
                          subtitle: Text(message),
                          onTap: () {
                            Navigator.push(
                              context,
                              MaterialPageRoute(
                                builder: (context) => PageNiveaux(
                                    totalNiveaux: 10,
                                    idAventure: aventure.id ?? 0,
                                    database: widget.database),
                              ),
                            );
                          },
                        ),
                      );
                    }
                  },
                );
              }).toList(),
            ],
          ),
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: () async {
          final nom = await showDialog<String>(
            context: context,
            builder: (BuildContext context) {
              return AlertDialog(
                title: Text('Créez une aventure'),
                content: TextField(
                  autofocus: true,
                  decoration: InputDecoration(
                    labelText: 'Nom',
                  ),
                  onSubmitted: (value) {
                    Navigator.of(context).pop(value);
                  },
                ),
              );
            },
          );

          if (nom != null) {
            final id = await aventureDB.add(nom);
            setState(() {
              aventures.add(Aventure(id: id, nomJoueur: nom));
            });
          }
        },
        child: Icon(Icons.add),
      ),
    );
  }
}
mais je n'arrive pas à faire la bonne requête ici : 
Future<int> getNextLevel(int idAventure) async {
    final db = await database;
    final List<Map<String, Object?>> levelsMaps = await db.rawQuery('''
    SELECT Niveau.palier
    FROM Niveau
    LEFT JOIN Partie ON Partie.idNiveau = Niveau.idNiveau AND Partie.idAventure = ?
    WHERE Niveau.idAventure = ? AND (Partie.gagne = 0)
    ORDER BY Niveau.palier ASC
  ''', [idAventure, idAventure]);

    if (levelsMaps.isEmpty) {
      // Tous les niveaux ont été gagnés
      return 11;
    } else {
      // Le prochain niveau à effectuer est le premier niveau qui n'a pas encore été gagné
      return levelsMaps.first['palier'] as int;
    }
  }