diff --git a/lib/view/pages/talk/components/chatBubble.dart b/lib/view/pages/talk/components/chatBubble.dart index 08b9866..141c47e 100644 --- a/lib/view/pages/talk/components/chatBubble.dart +++ b/lib/view/pages/talk/components/chatBubble.dart @@ -311,14 +311,11 @@ class _ChatBubbleState extends State with SingleTickerProviderStateM if(snapshot.connectionState == ConnectionState.waiting) return const Column(mainAxisSize: MainAxisSize.min, children: [LoadingSpinner()]); var pollData = snapshot.data!.data; - return ListView( - shrinkWrap: true, - children: [ - PollOptionsList( - pollData: pollData, - chatToken: widget.chatData.token - ) - ] + return SingleChildScrollView( + child: PollOptionsList( + pollData: pollData, + chatToken: widget.chatData.token, + ), ); } ), diff --git a/lib/view/pages/talk/components/pollOptionsList.dart b/lib/view/pages/talk/components/pollOptionsList.dart index 3e4eec4..30b3ab3 100644 --- a/lib/view/pages/talk/components/pollOptionsList.dart +++ b/lib/view/pages/talk/components/pollOptionsList.dart @@ -17,51 +17,51 @@ class PollOptionsList extends StatefulWidget { class _PollOptionsListState extends State { @override Widget build(BuildContext context) => Column( - children: [ - ...widget.pollData.options.map((option) { - var optionId = widget.pollData.options.indexOf(option); - var votedSelf = widget.pollData.votedSelf.contains(optionId); - var portionsVisible = widget.pollData.votes is Map; - var votes = portionsVisible - ? (widget.pollData.votes['option-$optionId'] as num?) ?? 0 - : 0; - var numVoters = widget.pollData.numVoters ?? 0; - double portion = numVoters == 0 ? 0 : (votes / numVoters); + children: [ + ...widget.pollData.options.map((option) { + var optionId = widget.pollData.options.indexOf(option); + var votedSelf = widget.pollData.votedSelf.contains(optionId); + var portionsVisible = widget.pollData.votes is Map; + var votes = portionsVisible + ? (widget.pollData.votes['option-$optionId'] as num?) ?? 0 + : 0; + var numVoters = widget.pollData.numVoters ?? 0; + double portion = numVoters == 0 ? 0 : (votes / numVoters); - return ListTile( - enabled: false, - isThreeLine: portionsVisible, - dense: true, - title: Text( - option, - style: Theme.of(context).textTheme.bodyLarge, - ), - leading: Icon( - votedSelf ? Icons.check_circle_outlined : Icons.circle_outlined, - color: votedSelf - ? Theme.of(context).colorScheme.primary.withValues(alpha: 0.6) - : Theme.of(context).colorScheme.onSurfaceVariant.withValues(alpha: 0.6), - ), - subtitle: portionsVisible ? Row( - children: [ - Expanded( - child: LinearProgressIndicator(value: portion.clamp(0.0, 1.0)), - ), - Container( - margin: const EdgeInsets.only(left: 10), - child: Text('${(portion * 100).round()}%'), - ), - ], - ) : null, - ); - }), - ListTile( - title: Linkify( - text: 'Wenn du abstimmen möchtest, verwende die Webversion unter https://cloud.marianum-fulda.de/call/${widget.chatToken}', - onOpen: UrlOpener.onOpen, - style: Theme.of(context).textTheme.bodySmall, + return ListTile( + // enabled: false, + isThreeLine: portionsVisible, + dense: true, + title: Text( + option, + style: Theme.of(context).textTheme.bodyLarge, ), - ) - ], - ); + leading: Icon( + votedSelf ? Icons.check_circle_outlined : Icons.circle_outlined, + color: votedSelf + ? Theme.of(context).colorScheme.primary.withValues(alpha: 0.6) + : Theme.of(context).colorScheme.onSurfaceVariant.withValues(alpha: 0.6), + ), + subtitle: portionsVisible ? Row( + children: [ + Expanded( + child: LinearProgressIndicator(value: portion.clamp(0.0, 1.0)), + ), + Container( + margin: const EdgeInsets.only(left: 10), + child: Text('${(portion * 100).round()}%'), + ), + ], + ) : null, + ); + }), + ListTile( + title: Linkify( + text: 'Wenn du abstimmen möchtest, verwende die Webversion unter https://cloud.marianum-fulda.de/call/${widget.chatToken}', + onOpen: UrlOpener.onOpen, + style: Theme.of(context).textTheme.bodySmall, + ), + ) + ], + ); }