fix percentage showing

This commit is contained in:
OfficialDakari 2025-10-16 18:08:01 +05:00
parent 7bac9f8a85
commit 314ab88551
72 changed files with 209 additions and 48 deletions

View File

@ -650,7 +650,7 @@ code + .copy-button {
<script type="text/javascript"> <script type="text/javascript">
function configurationCacheProblems() { return ( function configurationCacheProblems() { return (
// begin-report-data // begin-report-data
{"diagnostics":[{"problem":[{"text":"Executing Gradle on JVM versions 16 and lower has been deprecated."}],"severity":"WARNING","problemDetails":[{"text":"This will fail with an error in Gradle 9.0."}],"contextualLabel":"Executing Gradle on JVM versions 16 and lower has been deprecated.","documentationLink":"https://docs.gradle.org/8.13/userguide/upgrading_version_8.html#minimum_daemon_jvm_version","problemId":[{"name":"deprecation","displayName":"Deprecation"},{"name":"executing-gradle-on-jvm-versions-and-lower","displayName":"Executing Gradle on JVM versions 16 and lower has been deprecated."}],"solutions":[[{"text":"Use JVM 17 or greater to execute Gradle. Projects can continue to use older JVM versions via toolchains."}]]}],"problemsReport":{"totalProblemCount":1,"requestedTasks":"","documentationLink":"https://docs.gradle.org/8.13/userguide/reporting_problems.html","documentationLinkCaption":"Problem report","summaries":[]}} {"diagnostics":[{"problem":[{"text":"Executing Gradle on JVM versions 16 and lower has been deprecated."}],"severity":"WARNING","problemDetails":[{"text":"This will fail with an error in Gradle 9.0."}],"contextualLabel":"Executing Gradle on JVM versions 16 and lower has been deprecated.","documentationLink":"https://docs.gradle.org/8.13/userguide/upgrading_version_8.html#minimum_daemon_jvm_version","problemId":[{"name":"deprecation","displayName":"Deprecation"},{"name":"executing-gradle-on-jvm-versions-and-lower","displayName":"Executing Gradle on JVM versions 16 and lower has been deprecated."}],"solutions":[[{"text":"Use JVM 17 or greater to execute Gradle. Projects can continue to use older JVM versions via toolchains."}]]},{"problem":[{"text":"No variants exist that would match the request"}],"severity":"ERROR","contextualLabel":"Dependency requires at least JVM runtime version 11. This build uses a Java 8 JVM.","documentationLink":"https://docs.gradle.org/8.13/userguide/variant_model.html#sec:variant-select-errors","problemId":[{"name":"dependency-variant-resolution","displayName":"Variant resolution"},{"name":"no-compatible-variants","displayName":"No variants exist that would match the request"}]}],"problemsReport":{"totalProblemCount":2,"requestedTasks":"","documentationLink":"https://docs.gradle.org/8.13/userguide/reporting_problems.html","documentationLinkCaption":"Problem report","summaries":[]}}
// end-report-data // end-report-data
);} );}
</script> </script>

View File

@ -1 +1 @@
[{"family":"MaterialIcons","fonts":[{"asset":"fonts/MaterialIcons-Regular.otf"}]},{"family":"packages/cupertino_icons/CupertinoIcons","fonts":[{"asset":"packages/cupertino_icons/assets/CupertinoIcons.ttf"}]},{"family":"packages/material/Material","fonts":[{"asset":"packages/material/lib/fonts/material.ttf"}]}] [{"family":"MaterialIcons","fonts":[{"asset":"fonts/MaterialIcons-Regular.otf"}]},{"family":"packages/material/Material","fonts":[{"asset":"packages/material/lib/fonts/material.ttf"}]},{"family":"packages/cupertino_icons/CupertinoIcons","fonts":[{"asset":"packages/cupertino_icons/assets/CupertinoIcons.ttf"}]}]

View File

@ -223,6 +223,12 @@ abstract class L10n {
/// **'Resume'** /// **'Resume'**
String get resume; String get resume;
/// No description provided for @endPoll.
///
/// In en, this message translates to:
/// **'End poll'**
String get endPoll;
/// No description provided for @anonymousPoll. /// No description provided for @anonymousPoll.
/// ///
/// In en, this message translates to: /// In en, this message translates to:

View File

@ -24,6 +24,9 @@ class L10nAr extends L10n {
@override @override
String get resume => 'Resume'; String get resume => 'Resume';
@override
String get endPoll => 'End poll';
@override @override
String get anonymousPoll => 'Anonymous'; String get anonymousPoll => 'Anonymous';

View File

@ -24,6 +24,9 @@ class L10nBe extends L10n {
@override @override
String get resume => 'Resume'; String get resume => 'Resume';
@override
String get endPoll => 'End poll';
@override @override
String get anonymousPoll => 'Anonymous'; String get anonymousPoll => 'Anonymous';

View File

@ -24,6 +24,9 @@ class L10nBn extends L10n {
@override @override
String get resume => 'Resume'; String get resume => 'Resume';
@override
String get endPoll => 'End poll';
@override @override
String get anonymousPoll => 'Anonymous'; String get anonymousPoll => 'Anonymous';

View File

@ -24,6 +24,9 @@ class L10nBo extends L10n {
@override @override
String get resume => 'Resume'; String get resume => 'Resume';
@override
String get endPoll => 'End poll';
@override @override
String get anonymousPoll => 'Anonymous'; String get anonymousPoll => 'Anonymous';

View File

@ -24,6 +24,9 @@ class L10nCa extends L10n {
@override @override
String get resume => 'Resume'; String get resume => 'Resume';
@override
String get endPoll => 'End poll';
@override @override
String get anonymousPoll => 'Anonymous'; String get anonymousPoll => 'Anonymous';

View File

@ -24,6 +24,9 @@ class L10nCs extends L10n {
@override @override
String get resume => 'Resume'; String get resume => 'Resume';
@override
String get endPoll => 'End poll';
@override @override
String get anonymousPoll => 'Anonymous'; String get anonymousPoll => 'Anonymous';

View File

@ -24,6 +24,9 @@ class L10nDe extends L10n {
@override @override
String get resume => 'Resume'; String get resume => 'Resume';
@override
String get endPoll => 'End poll';
@override @override
String get anonymousPoll => 'Anonymous'; String get anonymousPoll => 'Anonymous';

View File

@ -24,6 +24,9 @@ class L10nEl extends L10n {
@override @override
String get resume => 'Resume'; String get resume => 'Resume';
@override
String get endPoll => 'End poll';
@override @override
String get anonymousPoll => 'Anonymous'; String get anonymousPoll => 'Anonymous';

View File

@ -24,6 +24,9 @@ class L10nEn extends L10n {
@override @override
String get resume => 'Resume'; String get resume => 'Resume';
@override
String get endPoll => 'End poll';
@override @override
String get anonymousPoll => 'Anonymous'; String get anonymousPoll => 'Anonymous';

View File

@ -24,6 +24,9 @@ class L10nEo extends L10n {
@override @override
String get resume => 'Resume'; String get resume => 'Resume';
@override
String get endPoll => 'End poll';
@override @override
String get anonymousPoll => 'Anonymous'; String get anonymousPoll => 'Anonymous';

View File

@ -24,6 +24,9 @@ class L10nEs extends L10n {
@override @override
String get resume => 'Resume'; String get resume => 'Resume';
@override
String get endPoll => 'End poll';
@override @override
String get anonymousPoll => 'Anonymous'; String get anonymousPoll => 'Anonymous';

View File

@ -24,6 +24,9 @@ class L10nEt extends L10n {
@override @override
String get resume => 'Resume'; String get resume => 'Resume';
@override
String get endPoll => 'End poll';
@override @override
String get anonymousPoll => 'Anonymous'; String get anonymousPoll => 'Anonymous';

View File

@ -24,6 +24,9 @@ class L10nEu extends L10n {
@override @override
String get resume => 'Resume'; String get resume => 'Resume';
@override
String get endPoll => 'End poll';
@override @override
String get anonymousPoll => 'Anonymous'; String get anonymousPoll => 'Anonymous';

View File

@ -24,6 +24,9 @@ class L10nFa extends L10n {
@override @override
String get resume => 'Resume'; String get resume => 'Resume';
@override
String get endPoll => 'End poll';
@override @override
String get anonymousPoll => 'Anonymous'; String get anonymousPoll => 'Anonymous';

View File

@ -24,6 +24,9 @@ class L10nFi extends L10n {
@override @override
String get resume => 'Resume'; String get resume => 'Resume';
@override
String get endPoll => 'End poll';
@override @override
String get anonymousPoll => 'Anonymous'; String get anonymousPoll => 'Anonymous';

View File

@ -24,6 +24,9 @@ class L10nFil extends L10n {
@override @override
String get resume => 'Resume'; String get resume => 'Resume';
@override
String get endPoll => 'End poll';
@override @override
String get anonymousPoll => 'Anonymous'; String get anonymousPoll => 'Anonymous';

View File

@ -24,6 +24,9 @@ class L10nFr extends L10n {
@override @override
String get resume => 'Resume'; String get resume => 'Resume';
@override
String get endPoll => 'End poll';
@override @override
String get anonymousPoll => 'Anonymous'; String get anonymousPoll => 'Anonymous';

View File

@ -24,6 +24,9 @@ class L10nGa extends L10n {
@override @override
String get resume => 'Resume'; String get resume => 'Resume';
@override
String get endPoll => 'End poll';
@override @override
String get anonymousPoll => 'Anonymous'; String get anonymousPoll => 'Anonymous';

View File

@ -24,6 +24,9 @@ class L10nGl extends L10n {
@override @override
String get resume => 'Resume'; String get resume => 'Resume';
@override
String get endPoll => 'End poll';
@override @override
String get anonymousPoll => 'Anonymous'; String get anonymousPoll => 'Anonymous';

View File

@ -24,6 +24,9 @@ class L10nHe extends L10n {
@override @override
String get resume => 'Resume'; String get resume => 'Resume';
@override
String get endPoll => 'End poll';
@override @override
String get anonymousPoll => 'Anonymous'; String get anonymousPoll => 'Anonymous';

View File

@ -24,6 +24,9 @@ class L10nHi extends L10n {
@override @override
String get resume => 'Resume'; String get resume => 'Resume';
@override
String get endPoll => 'End poll';
@override @override
String get anonymousPoll => 'Anonymous'; String get anonymousPoll => 'Anonymous';

View File

@ -24,6 +24,9 @@ class L10nHr extends L10n {
@override @override
String get resume => 'Resume'; String get resume => 'Resume';
@override
String get endPoll => 'End poll';
@override @override
String get anonymousPoll => 'Anonymous'; String get anonymousPoll => 'Anonymous';

View File

@ -24,6 +24,9 @@ class L10nHu extends L10n {
@override @override
String get resume => 'Resume'; String get resume => 'Resume';
@override
String get endPoll => 'End poll';
@override @override
String get anonymousPoll => 'Anonymous'; String get anonymousPoll => 'Anonymous';

View File

@ -24,6 +24,9 @@ class L10nIa extends L10n {
@override @override
String get resume => 'Resume'; String get resume => 'Resume';
@override
String get endPoll => 'End poll';
@override @override
String get anonymousPoll => 'Anonymous'; String get anonymousPoll => 'Anonymous';

View File

@ -24,6 +24,9 @@ class L10nId extends L10n {
@override @override
String get resume => 'Resume'; String get resume => 'Resume';
@override
String get endPoll => 'End poll';
@override @override
String get anonymousPoll => 'Anonymous'; String get anonymousPoll => 'Anonymous';

View File

@ -24,6 +24,9 @@ class L10nIe extends L10n {
@override @override
String get resume => 'Resume'; String get resume => 'Resume';
@override
String get endPoll => 'End poll';
@override @override
String get anonymousPoll => 'Anonymous'; String get anonymousPoll => 'Anonymous';

View File

@ -24,6 +24,9 @@ class L10nIt extends L10n {
@override @override
String get resume => 'Resume'; String get resume => 'Resume';
@override
String get endPoll => 'End poll';
@override @override
String get anonymousPoll => 'Anonymous'; String get anonymousPoll => 'Anonymous';

View File

@ -24,6 +24,9 @@ class L10nJa extends L10n {
@override @override
String get resume => 'Resume'; String get resume => 'Resume';
@override
String get endPoll => 'End poll';
@override @override
String get anonymousPoll => 'Anonymous'; String get anonymousPoll => 'Anonymous';

View File

@ -24,6 +24,9 @@ class L10nKa extends L10n {
@override @override
String get resume => 'Resume'; String get resume => 'Resume';
@override
String get endPoll => 'End poll';
@override @override
String get anonymousPoll => 'Anonymous'; String get anonymousPoll => 'Anonymous';

View File

@ -24,6 +24,9 @@ class L10nKo extends L10n {
@override @override
String get resume => 'Resume'; String get resume => 'Resume';
@override
String get endPoll => 'End poll';
@override @override
String get anonymousPoll => 'Anonymous'; String get anonymousPoll => 'Anonymous';

View File

@ -24,6 +24,9 @@ class L10nLt extends L10n {
@override @override
String get resume => 'Resume'; String get resume => 'Resume';
@override
String get endPoll => 'End poll';
@override @override
String get anonymousPoll => 'Anonymous'; String get anonymousPoll => 'Anonymous';

View File

@ -24,6 +24,9 @@ class L10nLv extends L10n {
@override @override
String get resume => 'Resume'; String get resume => 'Resume';
@override
String get endPoll => 'End poll';
@override @override
String get anonymousPoll => 'Anonymous'; String get anonymousPoll => 'Anonymous';

View File

@ -24,6 +24,9 @@ class L10nNb extends L10n {
@override @override
String get resume => 'Resume'; String get resume => 'Resume';
@override
String get endPoll => 'End poll';
@override @override
String get anonymousPoll => 'Anonymous'; String get anonymousPoll => 'Anonymous';

View File

@ -24,6 +24,9 @@ class L10nNl extends L10n {
@override @override
String get resume => 'Resume'; String get resume => 'Resume';
@override
String get endPoll => 'End poll';
@override @override
String get anonymousPoll => 'Anonymous'; String get anonymousPoll => 'Anonymous';

View File

@ -24,6 +24,9 @@ class L10nPl extends L10n {
@override @override
String get resume => 'Resume'; String get resume => 'Resume';
@override
String get endPoll => 'End poll';
@override @override
String get anonymousPoll => 'Anonymous'; String get anonymousPoll => 'Anonymous';

View File

@ -24,6 +24,9 @@ class L10nPt extends L10n {
@override @override
String get resume => 'Resume'; String get resume => 'Resume';
@override
String get endPoll => 'End poll';
@override @override
String get anonymousPoll => 'Anonymous'; String get anonymousPoll => 'Anonymous';

View File

@ -24,6 +24,9 @@ class L10nRo extends L10n {
@override @override
String get resume => 'Resume'; String get resume => 'Resume';
@override
String get endPoll => 'End poll';
@override @override
String get anonymousPoll => 'Anonymous'; String get anonymousPoll => 'Anonymous';

View File

@ -24,6 +24,9 @@ class L10nRu extends L10n {
@override @override
String get resume => 'Продолжить'; String get resume => 'Продолжить';
@override
String get endPoll => 'Завершить опрос';
@override @override
String get anonymousPoll => 'Анонимный'; String get anonymousPoll => 'Анонимный';

View File

@ -24,6 +24,9 @@ class L10nSk extends L10n {
@override @override
String get resume => 'Resume'; String get resume => 'Resume';
@override
String get endPoll => 'End poll';
@override @override
String get anonymousPoll => 'Anonymous'; String get anonymousPoll => 'Anonymous';

View File

@ -24,6 +24,9 @@ class L10nSl extends L10n {
@override @override
String get resume => 'Resume'; String get resume => 'Resume';
@override
String get endPoll => 'End poll';
@override @override
String get anonymousPoll => 'Anonymous'; String get anonymousPoll => 'Anonymous';

View File

@ -24,6 +24,9 @@ class L10nSr extends L10n {
@override @override
String get resume => 'Resume'; String get resume => 'Resume';
@override
String get endPoll => 'End poll';
@override @override
String get anonymousPoll => 'Anonymous'; String get anonymousPoll => 'Anonymous';

View File

@ -24,6 +24,9 @@ class L10nSv extends L10n {
@override @override
String get resume => 'Resume'; String get resume => 'Resume';
@override
String get endPoll => 'End poll';
@override @override
String get anonymousPoll => 'Anonymous'; String get anonymousPoll => 'Anonymous';

View File

@ -24,6 +24,9 @@ class L10nTa extends L10n {
@override @override
String get resume => 'Resume'; String get resume => 'Resume';
@override
String get endPoll => 'End poll';
@override @override
String get anonymousPoll => 'Anonymous'; String get anonymousPoll => 'Anonymous';

View File

@ -24,6 +24,9 @@ class L10nTe extends L10n {
@override @override
String get resume => 'Resume'; String get resume => 'Resume';
@override
String get endPoll => 'End poll';
@override @override
String get anonymousPoll => 'Anonymous'; String get anonymousPoll => 'Anonymous';

View File

@ -24,6 +24,9 @@ class L10nTh extends L10n {
@override @override
String get resume => 'Resume'; String get resume => 'Resume';
@override
String get endPoll => 'End poll';
@override @override
String get anonymousPoll => 'Anonymous'; String get anonymousPoll => 'Anonymous';

View File

@ -24,6 +24,9 @@ class L10nTr extends L10n {
@override @override
String get resume => 'Resume'; String get resume => 'Resume';
@override
String get endPoll => 'End poll';
@override @override
String get anonymousPoll => 'Anonymous'; String get anonymousPoll => 'Anonymous';

View File

@ -24,6 +24,9 @@ class L10nUk extends L10n {
@override @override
String get resume => 'Resume'; String get resume => 'Resume';
@override
String get endPoll => 'End poll';
@override @override
String get anonymousPoll => 'Anonymous'; String get anonymousPoll => 'Anonymous';

View File

@ -24,6 +24,9 @@ class L10nVi extends L10n {
@override @override
String get resume => 'Resume'; String get resume => 'Resume';
@override
String get endPoll => 'End poll';
@override @override
String get anonymousPoll => 'Anonymous'; String get anonymousPoll => 'Anonymous';

View File

@ -24,6 +24,9 @@ class L10nZh extends L10n {
@override @override
String get resume => 'Resume'; String get resume => 'Resume';
@override
String get endPoll => 'End poll';
@override @override
String get anonymousPoll => 'Anonymous'; String get anonymousPoll => 'Anonymous';

View File

@ -1,5 +1,6 @@
import 'package:extera_next/generated/l10n/l10n.dart'; import 'package:extera_next/generated/l10n/l10n.dart';
import 'package:extera_next/utils/poll_events.dart'; import 'package:extera_next/utils/poll_events.dart';
import 'package:extera_next/widgets/matrix.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:matrix/matrix.dart'; import 'package:matrix/matrix.dart';
@ -29,6 +30,7 @@ class PollWidgetState extends State<PollWidget> {
Map<String, int>? pollResults; Map<String, int>? pollResults;
bool hasVoted = false; bool hasVoted = false;
bool isLoading = false; bool isLoading = false;
bool hasEnded = false;
@override @override
void initState() { void initState() {
@ -38,8 +40,7 @@ class PollWidgetState extends State<PollWidget> {
void _loadPollData() { void _loadPollData() {
final event = widget.event; final event = widget.event;
final content = final content = event.content[PollEvents.PollStart] as Map<String, dynamic>;
event.content[PollEvents.PollStart] as Map<String, dynamic>;
// Check if user has already voted // Check if user has already voted
_checkExistingVote(); _checkExistingVote();
@ -51,47 +52,49 @@ class PollWidgetState extends State<PollWidget> {
} }
} }
void _checkExistingVote() { void _checkExistingVote() async {
final room = widget.event.room; final room = widget.event.room;
final currentUserId = room.client.userID; final currentUserId = room.client.userID;
final rel = await Matrix.of(context)
.client
.getRelatingEventsWithRelTypeAndEventType(room.id, widget.event.eventId,
"m.reference", "org.matrix.msc3381.poll.response");
// Find existing poll response events from current user // Get all poll response events for this poll
final responses = widget.timeline!.events.where((e) { final responses = rel.chunk;
return e.type == 'org.matrix.msc3381.poll.response' &&
e.senderId == currentUserId &&
e.relationshipEventId == widget.event.eventId;
}).toList();
if (responses.isNotEmpty) { if (responses.isNotEmpty) {
// Use the latest response // Use the latest response
final latestResponse = responses.last; for (final response in responses) {
final responseContent = latestResponse final responseContent =
.content['org.matrix.msc3381.poll.response'] as Map<String, dynamic>; response.content['org.matrix.msc3381.poll.response']
if (responseContent != null) { as Map<String, dynamic>;
final List<dynamic> answers = responseContent['answers']; if (responseContent != null && response.senderId == currentUserId) {
setState(() { final List<dynamic> answers = responseContent['answers'];
selectedAnswers = answers.cast<String>(); setState(() {
originalVote = List.from(answers.cast<String>()); // Store original vote selectedAnswers = answers.cast<String>();
hasVoted = true; originalVote =
}); List.from(answers.cast<String>()); // Store original vote
hasVoted = true;
});
}
} }
} }
} }
void _calculateResults() { void _calculateResults() async {
final room = widget.event.room; final room = widget.event.room;
final pollEventId = widget.event.eventId; final pollEventId = widget.event.eventId;
final results = <String, int>{}; final results = <String, int>{};
final rel = await Matrix.of(context)
.client
.getRelatingEventsWithRelTypeAndEventType(room.id, pollEventId,
"m.reference", "org.matrix.msc3381.poll.response");
// Get all poll response events for this poll // Get all poll response events for this poll
final responses = widget.timeline!.events.where((e) { final responses = rel.chunk;
return e.type == 'org.matrix.msc3381.poll.response' &&
e.relationshipEventId == pollEventId;
}).toList();
// Count votes for each answer // Count votes for each answer
for (final response in responses) { for (final response in responses) {
@ -121,18 +124,15 @@ class PollWidgetState extends State<PollWidget> {
final room = widget.event.room; final room = widget.event.room;
// Send poll response event // Send poll response event
await room.sendEvent( await room.sendEvent({
{ 'm.relates_to': {
'm.relates_to': { 'rel_type': 'm.reference',
'rel_type': 'm.reference', 'event_id': widget.event.eventId,
'event_id': widget.event.eventId,
},
'org.matrix.msc3381.poll.response': {
'answers': answers,
},
}, },
type: 'org.matrix.msc3381.poll.response' 'org.matrix.msc3381.poll.response': {
); 'answers': answers,
},
}, type: 'org.matrix.msc3381.poll.response');
setState(() { setState(() {
selectedAnswers = answers; selectedAnswers = answers;
@ -206,30 +206,35 @@ class PollWidgetState extends State<PollWidget> {
final isDisclosed = kind == 'org.matrix.msc3381.disclosed'; final isDisclosed = kind == 'org.matrix.msc3381.disclosed';
final isEnded = _isPollEnded(); final isEnded = _isPollEnded();
return isDisclosed || isEnded || hasVoted; return isDisclosed ? (isEnded || hasVoted) : isEnded;
} }
double _getAnswerPercentage(String answerId) { double _getAnswerPercentage(String answerId) {
if (pollResults == null || pollResults!.isEmpty) return 0.0; if (pollResults == null || pollResults!.isEmpty) return 0.0;
final totalVotes = pollResults!.values.reduce((a, b) => a + b); final totalVotes = pollResults!.values.reduce((a, b) => a + b);
if (totalVotes == 0) return 0.0; if (totalVotes == 0) return 0.0;
return pollResults![answerId]?.toDouble() ?? 0 / totalVotes.toDouble(); // if (_shouldShowResults()) {
// Logs().w("Get answer percentage for $answerId");
// Logs().w(pollResults.toString());
// Logs().w("${pollResults![answerId]?.toDouble() ?? 0} / $totalVotes");
// }
return (pollResults![answerId]?.toDouble() ?? 0) / totalVotes.toDouble();
} }
// Check if the current selection is different from the original vote // Check if the current selection is different from the original vote
bool _hasSelectionChanged() { bool _hasSelectionChanged() {
if (selectedAnswers.length != originalVote.length) return true; if (selectedAnswers.length != originalVote.length) return true;
// Sort both lists to compare regardless of order // Sort both lists to compare regardless of order
final sortedSelected = List.from(selectedAnswers)..sort(); final sortedSelected = List.from(selectedAnswers)..sort();
final sortedOriginal = List.from(originalVote)..sort(); final sortedOriginal = List.from(originalVote)..sort();
for (int i = 0; i < sortedSelected.length; i++) { for (int i = 0; i < sortedSelected.length; i++) {
if (sortedSelected[i] != sortedOriginal[i]) return true; if (sortedSelected[i] != sortedOriginal[i]) return true;
} }
return false; return false;
} }
@ -364,7 +369,9 @@ class PollWidgetState extends State<PollWidget> {
height: 16, height: 16,
child: CircularProgressIndicator(strokeWidth: 2), child: CircularProgressIndicator(strokeWidth: 2),
) )
: Text(hasVoted ? L10n.of(context).changeVote : L10n.of(context).vote), : Text(hasVoted
? L10n.of(context).changeVote
: L10n.of(context).vote),
), ),
const Spacer(), const Spacer(),
@ -386,7 +393,8 @@ class PollWidgetState extends State<PollWidget> {
Padding( Padding(
padding: const EdgeInsets.only(top: 8), padding: const EdgeInsets.only(top: 8),
child: Text( child: Text(
L10n.of(context).choicesSelected(selectedAnswers.length, maxSelections), L10n.of(context)
.choicesSelected(selectedAnswers.length, maxSelections),
style: TextStyle( style: TextStyle(
fontSize: widget.fontSize - 2, fontSize: widget.fontSize - 2,
color: widget.color.withOpacity(0.6), color: widget.color.withOpacity(0.6),
@ -397,4 +405,4 @@ class PollWidgetState extends State<PollWidget> {
), ),
); );
} }
} }