fixed issues with null values in votes map
This commit is contained in:
@@ -1,5 +1,4 @@
|
||||
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_linkify/flutter_linkify.dart';
|
||||
|
||||
@@ -16,22 +15,20 @@ class PollOptionsList extends StatefulWidget {
|
||||
class _PollOptionsListState extends State<PollOptionsList> {
|
||||
@override
|
||||
Widget build(BuildContext context) => Column(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
children: [
|
||||
...widget.pollData.options.map<Widget>((option) {
|
||||
var optionId = widget.pollData.options.indexOf(option);
|
||||
var votedSelf = widget.pollData.votedSelf.contains(optionId);
|
||||
var votes = widget.pollData.votes.runtimeType is Map<String, dynamic>
|
||||
? widget.pollData.votes['option-$optionId']
|
||||
: 0;
|
||||
int numVoters = 1;
|
||||
if(widget.pollData.numVoters != null && widget.pollData.numVoters != 0) {
|
||||
numVoters = widget.pollData.numVoters!;
|
||||
}
|
||||
var portion = (votes / numVoters);
|
||||
var portionsVisible = widget.pollData.votes is Map<String, dynamic>;
|
||||
var votes = !portionsVisible ? 0
|
||||
: (widget.pollData.votes['option-$optionId'] as num?) ?? 0;
|
||||
var numVoters = widget.pollData.numVoters ?? 0;
|
||||
double portion = numVoters == 0 ? 0 : (votes / numVoters);
|
||||
|
||||
return ListTile(
|
||||
enabled: false,
|
||||
isThreeLine: true,
|
||||
isThreeLine: portionsVisible,
|
||||
title: Text(
|
||||
option,
|
||||
style: Theme.of(context).textTheme.bodyLarge,
|
||||
@@ -43,11 +40,11 @@ class _PollOptionsListState extends State<PollOptionsList> {
|
||||
: Theme.of(context).colorScheme.onSurfaceVariant.withValues(alpha: 0.8),
|
||||
),
|
||||
subtitle: Visibility(
|
||||
visible: widget.pollData.numVoters != null,
|
||||
visible: portionsVisible,
|
||||
child: Row(
|
||||
children: [
|
||||
Expanded(
|
||||
child: LinearProgressIndicator(value: portion),
|
||||
child: LinearProgressIndicator(value: portion.clamp(0.0, 1.0)),
|
||||
),
|
||||
Container(
|
||||
margin: const EdgeInsets.only(left: 10),
|
||||
@@ -60,8 +57,8 @@ class _PollOptionsListState extends State<PollOptionsList> {
|
||||
}),
|
||||
ListTile(
|
||||
title: Linkify(
|
||||
text: 'Zurzeit kann in dieser App leider nicht an Abstimmungen teilgenommen werden. '
|
||||
'Um abzustimmen verwende die Webversion unter https://cloud.marianum-fulda.de',
|
||||
text: 'Zurzeit kann in dieser App leider nicht abgestimmt werden. '
|
||||
'Verwende dafür die Webversion unter https://cloud.marianum-fulda.de',
|
||||
style: Theme.of(context).textTheme.bodySmall,
|
||||
),
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user