Как использовать сортировку orderBy в sqflite во Flutter?

Как отсортировать список по возрастанию / убыванию в базе данных sqflite?

В интернете все примеры ограничиваются следующим кодом:

result = await db.query(tableName,
        columns: columns,
        where: 'columnName LIKE ?',
        whereArgs: ["%$query%"]
    );

Но нигде нет примеров использования в этой конструкции "orderBy: ".

Как правильно сделать сортировку по возрастанию / убыванию?


Ответы (2 шт):

Автор решения: dut

Могу предложить Вам два варианта:

  1. если посмотрите сигнатуру метода query, то можете обратить внимание что у него есть необязательный параметр orderBy, через который можно передать по какому столбцу сортировать, типа:

    result = await db.query(tableName,
            columns: columns,
            orderBy: 'sum ASC'
            where: 'columnName LIKE ?',
            whereArgs: ["%$query%"]
        );
    
  2. для запросов можно не использовать обёртки, а написать в строку сам запрос и передать его методу rawQuery, что-то типа:

    final sql = 'SELECT * FROM $tableName WHERE id = ? ORDER BY $column DESC';
    await rawQuery(sql, [id]);
    
→ Ссылка
Автор решения: Andrew Levitsky

Можно это легко сделать с уже полученной коллекцией:

result.sort((a, b) => a.someProperty.compareTo(b.someProperty));
→ Ссылка