game_over.dart (2052B)
1 import 'package:flutter/material.dart'; 2 import 'package:sense_the_rhythm/models/note.dart'; 3 import 'package:sense_the_rhythm/utils/simfile.dart'; 4 import 'package:sense_the_rhythm/screens/level.dart'; 5 6 class GameOverStats extends StatelessWidget { 7 const GameOverStats({super.key, required this.simfile, required this.notes}); 8 9 final Simfile simfile; 10 final List<Note> notes; 11 12 @override 13 Widget build(BuildContext context) { 14 int hits = notes.where((note) => note.wasHit == true).length; 15 int misses = notes.where((note) => note.wasHit == false).length; 16 int total = notes.length; 17 int percent = (hits.toDouble() / total.toDouble() * 100).toInt(); 18 19 return Scaffold( 20 appBar: AppBar( 21 leading: IconButton( 22 onPressed: () => Navigator.pop(context), 23 icon: Icon(Icons.arrow_back)), 24 title: Text('Game Stats'), 25 ), 26 body: Center( 27 child: Column( 28 children: [ 29 Text(' $percent%', 30 style: TextStyle( 31 fontSize: 60, 32 fontWeight: FontWeight.bold, 33 color: Colors.orange)), 34 DataTable(columns: [ 35 DataColumn(label: Container()), 36 DataColumn(label: Container()), 37 ], rows: [ 38 DataRow(cells: [ 39 DataCell(Text('Hits')), 40 DataCell(Text(hits.toString())), 41 ]), 42 DataRow(cells: [ 43 DataCell(Text('Misses')), 44 DataCell(Text(misses.toString())), 45 ]), 46 DataRow(cells: [ 47 DataCell(Text('Total')), 48 DataCell(Text(total.toString())), 49 ]), 50 ]), 51 TextButton( 52 onPressed: () { 53 Route route = 54 MaterialPageRoute(builder: (context) => Level(simfile)); 55 Navigator.pushReplacement(context, route); 56 }, 57 child: Text('Retry')) 58 ], 59 ), 60 ), 61 ); 62 } 63 }