1
0
Dieser Commit ist enthalten in:
Chaoscaot 2023-04-12 00:10:59 +02:00
Ursprung 2278546f01
Commit f1f3c5f610
4 geänderte Dateien mit 92 neuen und 49 gelöschten Zeilen

Datei anzeigen

@ -82,12 +82,12 @@ class DevServerStarterApp extends StatelessWidget {
title: 'Steamwar Multitool', title: 'Steamwar Multitool',
theme: ThemeData( theme: ThemeData(
useMaterial3: true, useMaterial3: true,
colorSchemeSeed: const Color(0xFFFFFF55), colorSchemeSeed: Colors.blue,
), ),
darkTheme: ThemeData( darkTheme: ThemeData(
brightness: Brightness.dark, brightness: Brightness.dark,
useMaterial3: true, useMaterial3: true,
colorSchemeSeed: const Color(0xFFFFFF55), colorSchemeSeed: Colors.amber,
), ),
debugShowCheckedModeBanner: false, debugShowCheckedModeBanner: false,
); );

Datei anzeigen

@ -90,6 +90,13 @@ class EventFightList extends HookConsumerWidget {
}, },
label: const Text("Generate Fight"), label: const Text("Generate Fight"),
icon: const Icon(Icons.shuffle)), icon: const Icon(Icons.shuffle)),
const Spacer(),
Tooltip(
message: "Fights",
child: CircleAvatar(
child: Text(fights.value.length.toString()),
),
),
], ],
), ),
Row( Row(

Datei anzeigen

@ -62,6 +62,20 @@ class LoadedEventScreen extends HookConsumerWidget {
value.firstWhere((element) => element.db == event.schemType))); value.firstWhere((element) => element.db == event.schemType)));
}); });
final fightCount = useMemoized(() {
Map<int, int> fightCount = {};
for (var team in eventData.teams) {
fightCount[team.id] = 0;
}
for (var fight in eventData.fights) {
fightCount[fight.blueTeam.id] =
(fightCount[fight.blueTeam.id] ?? 0) + 1;
fightCount[fight.redTeam.id] = (fightCount[fight.redTeam.id] ?? 0) + 1;
}
return fightCount;
}, [eventData.fights, eventData.teams]);
final changed = useState(false); final changed = useState(false);
return Scaffold( return Scaffold(
appBar: AppBar( appBar: AppBar(
@ -183,36 +197,48 @@ class LoadedEventScreen extends HookConsumerWidget {
}, },
), ),
const SizedBox(height: 8), const SizedBox(height: 8),
Row( Wrap(
alignment: WrapAlignment.spaceBetween,
children: [ children: [
const Text("Deadline: "), Column(
children: [
const Tooltip(
message: "Deadline",
child: Icon(Icons.block),
),
DateTimeEditor((p0) { DateTimeEditor((p0) {
deadlineState.value = p0; deadlineState.value = p0;
changed.value = true; changed.value = true;
}, deadlineState.value, true), }, deadlineState.value, true),
], ],
), ),
const SizedBox(height: 8), Column(
Row(
children: [ children: [
const Text("Start: "), const Tooltip(
message: "Start",
child: Icon(Icons.swipe_right_alt),
),
DateTimeEditor((p0) { DateTimeEditor((p0) {
startDateState.value = p0; startDateState.value = p0;
changed.value = true; changed.value = true;
}, startDateState.value, true), }, startDateState.value, true),
], ],
), ),
const SizedBox(height: 8), Column(
Row(
children: [ children: [
const Text("End: "), const Tooltip(
message: "End",
child: Icon(Icons.swipe_left_alt),
),
DateTimeEditor((p0) { DateTimeEditor((p0) {
endDateState.value = p0; endDateState.value = p0;
changed.value = true; changed.value = true;
}, endDateState.value, true), }, endDateState.value, true),
], ],
), ),
const SizedBox(height: 8), ],
),
const SizedBox(height: 16),
Row( Row(
children: [ children: [
SizedBox( SizedBox(
@ -316,7 +342,7 @@ class LoadedEventScreen extends HookConsumerWidget {
), ),
], ],
), ),
TeamList(eventData.teams), TeamList(eventData.teams, fightCount),
EventFightList( EventFightList(
eventData: eventData, eventData: eventData,
), ),

Datei anzeigen

@ -23,18 +23,27 @@ import 'package:steamwar_multitool/src/types/types.dart';
class TeamList extends HookConsumerWidget { class TeamList extends HookConsumerWidget {
final List<Team> teams; final List<Team> teams;
final Map<int, int> fightCount;
const TeamList( const TeamList(
this.teams, { this.teams,
this.fightCount, {
Key? key, Key? key,
}) : super(key: key); }) : super(key: key);
@override @override
Widget build(BuildContext context, WidgetRef ref) { Widget build(BuildContext context, WidgetRef ref) {
return ListView.builder( return ListView(
itemBuilder: (context, index) { children: [
final team = teams[index]; ListTile(
return ListTile( title: const Text("Teams"),
leading: CircleAvatar(
child: Text(teams.length.toString()),
),
),
const Divider(),
for (final team in teams)
ListTile(
title: Text(team.name), title: Text(team.name),
leading: CircleAvatar( leading: CircleAvatar(
backgroundColor: team.color, backgroundColor: team.color,
@ -48,9 +57,10 @@ class TeamList extends HookConsumerWidget {
), ),
), ),
), ),
); subtitle: Text(
}, "Fights: ${fightCount[team.id] ?? 0}",
itemCount: teams.length, )),
],
); );
} }
} }