Update UI
Dieser Commit ist enthalten in:
Ursprung
2278546f01
Commit
f1f3c5f610
@ -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,
|
||||||
);
|
);
|
||||||
|
@ -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(
|
||||||
|
@ -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(
|
||||||
DateTimeEditor((p0) {
|
children: [
|
||||||
deadlineState.value = p0;
|
const Tooltip(
|
||||||
changed.value = true;
|
message: "Deadline",
|
||||||
}, deadlineState.value, true),
|
child: Icon(Icons.block),
|
||||||
|
),
|
||||||
|
DateTimeEditor((p0) {
|
||||||
|
deadlineState.value = p0;
|
||||||
|
changed.value = true;
|
||||||
|
}, deadlineState.value, true),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
Column(
|
||||||
|
children: [
|
||||||
|
const Tooltip(
|
||||||
|
message: "Start",
|
||||||
|
child: Icon(Icons.swipe_right_alt),
|
||||||
|
),
|
||||||
|
DateTimeEditor((p0) {
|
||||||
|
startDateState.value = p0;
|
||||||
|
changed.value = true;
|
||||||
|
}, startDateState.value, true),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
Column(
|
||||||
|
children: [
|
||||||
|
const Tooltip(
|
||||||
|
message: "End",
|
||||||
|
child: Icon(Icons.swipe_left_alt),
|
||||||
|
),
|
||||||
|
DateTimeEditor((p0) {
|
||||||
|
endDateState.value = p0;
|
||||||
|
changed.value = true;
|
||||||
|
}, endDateState.value, true),
|
||||||
|
],
|
||||||
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
const SizedBox(height: 8),
|
const SizedBox(height: 16),
|
||||||
Row(
|
|
||||||
children: [
|
|
||||||
const Text("Start: "),
|
|
||||||
DateTimeEditor((p0) {
|
|
||||||
startDateState.value = p0;
|
|
||||||
changed.value = true;
|
|
||||||
}, startDateState.value, true),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
const SizedBox(height: 8),
|
|
||||||
Row(
|
|
||||||
children: [
|
|
||||||
const Text("End: "),
|
|
||||||
DateTimeEditor((p0) {
|
|
||||||
endDateState.value = p0;
|
|
||||||
changed.value = true;
|
|
||||||
}, endDateState.value, true),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
const SizedBox(height: 8),
|
|
||||||
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,
|
||||||
),
|
),
|
||||||
|
@ -23,34 +23,44 @@ 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"),
|
||||||
title: Text(team.name),
|
|
||||||
leading: CircleAvatar(
|
leading: CircleAvatar(
|
||||||
backgroundColor: team.color,
|
child: Text(teams.length.toString()),
|
||||||
child: Text(
|
|
||||||
team.kuerzel,
|
|
||||||
style: TextStyle(
|
|
||||||
color: team.color.computeLuminance() > 0.4
|
|
||||||
? Colors.black
|
|
||||||
: Colors.white,
|
|
||||||
fontSize: 12,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
);
|
),
|
||||||
},
|
const Divider(),
|
||||||
itemCount: teams.length,
|
for (final team in teams)
|
||||||
|
ListTile(
|
||||||
|
title: Text(team.name),
|
||||||
|
leading: CircleAvatar(
|
||||||
|
backgroundColor: team.color,
|
||||||
|
child: Text(
|
||||||
|
team.kuerzel,
|
||||||
|
style: TextStyle(
|
||||||
|
color: team.color.computeLuminance() > 0.4
|
||||||
|
? Colors.black
|
||||||
|
: Colors.white,
|
||||||
|
fontSize: 12,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
subtitle: Text(
|
||||||
|
"Fights: ${fightCount[team.id] ?? 0}",
|
||||||
|
)),
|
||||||
|
],
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
In neuem Issue referenzieren
Einen Benutzer sperren