import 'package:flip_card/flip_card_controller.dart'; import 'package:flutter/material.dart'; import 'package:flip_card/flip_card.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; import 'package:werwolf/screens/gameboard.dart'; import '../models/player.dart'; import '../models/role.dart'; class FlipingCard extends StatefulWidget { final List players; const FlipingCard({required this.players, super.key}); @override State createState() => _FlipingCardState(); } class _FlipingCardState extends State { int index = 0; late FlipCardController _controller; @override void initState() { super.initState(); _controller = FlipCardController(); } _renderContent(context) { return Card( elevation: 0.0, margin: const EdgeInsets.only( left: 15.0, right: 15.0, top: 10.0, bottom: 10.0), color: const Color(0x00000000), child: FlipCard( controller: _controller, direction: FlipDirection.HORIZONTAL, side: CardSide.FRONT, speed: 300, onFlipDone: (status) {}, front: Container( decoration: BoxDecoration( color: Theme.of(context).colorScheme.primary, borderRadius: const BorderRadius.all(Radius.circular(8.0)), ), child: Column( crossAxisAlignment: CrossAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center, children: [ Container( padding: const EdgeInsets.all(10), child: Text( widget.players[index].name, style: Theme.of(context).textTheme.headlineMedium, textAlign: TextAlign.center, ), ), const Text( 'Klick um deine Rolle zu sehen!', textAlign: TextAlign.center, ), ], ), ), back: Container( decoration: BoxDecoration( color: widget.players[index].role != Role.werwolf ? const Color(0xFF006666) : const Color.fromARGB(255, 100, 21, 15), borderRadius: const BorderRadius.all(Radius.circular(8.0)), ), child: Column( crossAxisAlignment: CrossAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center, children: [ Container( padding: const EdgeInsets.all(10), child: Text( widget.players[index].role.stringValue, style: Theme.of(context).textTheme.headlineMedium, textAlign: TextAlign.center, ), ), ], ), ), ), ); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: const Text("Werwolf"), centerTitle: true, leading: IconButton( icon: const Icon(FontAwesomeIcons.xmark), onPressed: () { Navigator.popUntil(context, ModalRoute.withName('/')); }, ), ), body: Column( crossAxisAlignment: CrossAxisAlignment.stretch, mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: [ Expanded(child: _renderContent(context)), Container( padding: const EdgeInsets.only(bottom: 15), child: Row( mainAxisAlignment: MainAxisAlignment.spaceEvenly, crossAxisAlignment: CrossAxisAlignment.center, children: [ OutlinedButton( onPressed: () { setState(() { if (index > 0 && index <= widget.players.length) { index--; if (!_controller.state!.isFront) { _controller.toggleCardWithoutAnimation(); } } }); }, child: const Text("Zurück"), ), ElevatedButton( onPressed: () { setState(() { if (index >= 0 && index < widget.players.length - 1) { index++; if (!_controller.state!.isFront) { _controller.toggleCardWithoutAnimation(); } } else if (index == widget.players.length - 1) { Navigator.push( context, MaterialPageRoute( builder: (context) => PlayerGridView(players: widget.players), ), ); } }); }, child: Text(index != widget.players.length - 1 ? "Nächster Spieler" : "Spiel anfangen!"), ), ], ), ), ], ), ); } }