TetraStats/lib/widgets/recent_sp_games.dart

51 lines
2.2 KiB
Dart

import 'package:flutter/material.dart';
import 'package:intl/intl.dart';
import 'package:tetra_stats/data_objects/record_single.dart';
import 'package:tetra_stats/data_objects/singleplayer_stream.dart';
import 'package:tetra_stats/gen/strings.g.dart';
import 'package:tetra_stats/utils/relative_timestamps.dart';
import 'package:tetra_stats/utils/text_shadow.dart';
import 'package:tetra_stats/views/singleplayer_record_view.dart';
import 'package:tetra_stats/widgets/sp_trailing_stats.dart';
import 'package:tetra_stats/widgets/text_timestamp.dart';
class RecentSingleplayerGames extends StatelessWidget{
final SingleplayerStream recent;
final bool hideTitle;
const RecentSingleplayerGames({required this.recent, this.hideTitle = false, super.key});
@override
Widget build(BuildContext context) {
return Column(
children: [
if (!hideTitle) Padding(
padding: const EdgeInsets.only(bottom: 8.0),
child: Text(t.recent, style: const TextStyle(height: 0.1, fontFamily: "Eurostile Round Extended", fontSize: 18)),
),
for(RecordSingle record in recent.records) ListTile(
onTap: () => Navigator.push(context, MaterialPageRoute(builder: (context) => SingleplayerRecordView(record: record))),
leading: Text(
switch (record.gamemode){
"40l" => "40L",
"blitz" => "BLZ",
"5mblast" => "5MB",
String() => "huh",
},
style: const TextStyle(fontFamily: "Eurostile Round", fontSize: 28, shadows: textShadow, height: 0.9)
),
title: Text(
switch (record.gamemode){
"40l" => get40lTime(record.stats.finalTime.inMicroseconds),
"blitz" => t.blitzScore(p: NumberFormat.decimalPattern().format(record.stats.score)),
"5mblast" => get40lTime(record.stats.finalTime.inMicroseconds),
String() => "huh",
},
style: Theme.of(context).textTheme.displayLarge),
subtitle: Text(timestamp(record.timestamp), style: const TextStyle(color: Colors.grey, height: 0.85)),
trailing: SpTrailingStats(record, record.gamemode)
)
],
);
}
}