2 Commits

Author SHA1 Message Date
795060a05b Fix grid a fucking gain 2025-02-22 18:13:09 +01:00
bbd3583939 Sort games by name 2025-02-22 18:07:46 +01:00
2 changed files with 33 additions and 65 deletions

View File

@@ -102,7 +102,7 @@ last_updated = excluded.last_updated
static Future<Map<String, Game>> getAll() async {
final db = DB.db;
final games = await db.rawQuery(
'SELECT name, actual_version, last_played, rss_feed_url, version_regex, last_updated, image_data FROM games',
'SELECT name, actual_version, last_played, rss_feed_url, version_regex, last_updated, image_data FROM games ORDER BY name',
);
return games
.map((e) => Game.fromMap(e))

View File

@@ -90,19 +90,15 @@ class _MyHomePageState extends State<MyHomePage> {
onRefresh: _refreshGames,
child: SingleChildScrollView(
padding: const EdgeInsets.all(8),
child: Column(
child: Wrap(
spacing: 8,
runSpacing: 8,
children: [
for (var i = 0; i < games.length + 1; i += 2)
Padding(
padding: const EdgeInsets.only(bottom: 8),
child: Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Expanded(
child:
i < games.length
? GameCard(
game: games.values.elementAt(i),
...games.values.map(
(game) => SizedBox(
width: (MediaQuery.of(context).size.width - 24) / 2,
child: GameCard(
game: game,
onGameUpdated: (game) async {
game = await GameRepository.upsert(game);
setState(() {
@@ -110,17 +106,17 @@ class _MyHomePageState extends State<MyHomePage> {
});
},
onDelete: () async {
await GameRepository.delete(
games.values.elementAt(i),
);
await GameRepository.delete(game);
setState(() {
games.remove(
games.values.elementAt(i).name,
);
games.remove(game.name);
});
},
)
: NewGameCard(
),
),
),
SizedBox(
width: (MediaQuery.of(context).size.width - 24) / 2,
child: NewGameCard(
onGameCreated: (game) async {
game = await GameRepository.upsert(game);
setState(() {
@@ -129,34 +125,6 @@ class _MyHomePageState extends State<MyHomePage> {
},
),
),
const SizedBox(width: 8),
Expanded(
child:
i + 1 < games.length
? GameCard(
game: games.values.elementAt(i + 1),
onGameUpdated: (game) async {
game = await GameRepository.upsert(game);
setState(() {
games[game.name] = game;
});
},
onDelete: () async {
await GameRepository.delete(
games.values.elementAt(i + 1),
);
setState(() {
games.remove(
games.values.elementAt(i + 1).name,
);
});
},
)
: const SizedBox(), // Empty space for odd number of items
),
],
),
),
],
),
),