🐛 Fix poll feedback, close #224
This commit is contained in:
@@ -56,8 +56,7 @@ class PollFeedbackSheet extends HookConsumerWidget {
|
|||||||
return SheetScaffold(
|
return SheetScaffold(
|
||||||
titleText: title ?? 'Poll feedback',
|
titleText: title ?? 'Poll feedback',
|
||||||
child: poll.when(
|
child: poll.when(
|
||||||
data:
|
data: (data) => CustomScrollView(
|
||||||
(data) => CustomScrollView(
|
|
||||||
slivers: [
|
slivers: [
|
||||||
SliverToBoxAdapter(child: _PollHeader(poll: data)),
|
SliverToBoxAdapter(child: _PollHeader(poll: data)),
|
||||||
SliverToBoxAdapter(child: const Divider(height: 1)),
|
SliverToBoxAdapter(child: const Divider(height: 1)),
|
||||||
@@ -66,6 +65,7 @@ class PollFeedbackSheet extends HookConsumerWidget {
|
|||||||
provider: provider,
|
provider: provider,
|
||||||
notifier: provider.notifier,
|
notifier: provider.notifier,
|
||||||
isSliver: true,
|
isSliver: true,
|
||||||
|
isRefreshable: false,
|
||||||
itemBuilder: (context, index, answer) {
|
itemBuilder: (context, index, answer) {
|
||||||
return Column(
|
return Column(
|
||||||
children: [
|
children: [
|
||||||
@@ -79,8 +79,7 @@ class PollFeedbackSheet extends HookConsumerWidget {
|
|||||||
SliverGap(4 + MediaQuery.of(context).padding.bottom),
|
SliverGap(4 + MediaQuery.of(context).padding.bottom),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
error:
|
error: (err, _) => ResponseErrorWidget(
|
||||||
(err, _) => ResponseErrorWidget(
|
|
||||||
error: err,
|
error: err,
|
||||||
onRetry: () => ref.invalidate(pollWithStatsProvider(pollId)),
|
onRetry: () => ref.invalidate(pollWithStatsProvider(pollId)),
|
||||||
),
|
),
|
||||||
@@ -120,8 +119,7 @@ class _PollHeader extends StatelessWidget {
|
|||||||
ExpansionTile(
|
ExpansionTile(
|
||||||
title: Text('pollQuestions').tr().fontSize(17).bold(),
|
title: Text('pollQuestions').tr().fontSize(17).bold(),
|
||||||
tilePadding: EdgeInsets.symmetric(horizontal: 20),
|
tilePadding: EdgeInsets.symmetric(horizontal: 20),
|
||||||
children:
|
children: poll.questions
|
||||||
poll.questions
|
|
||||||
.map(
|
.map(
|
||||||
(q) => Column(
|
(q) => Column(
|
||||||
crossAxisAlignment: CrossAxisAlignment.stretch,
|
crossAxisAlignment: CrossAxisAlignment.stretch,
|
||||||
@@ -165,8 +163,7 @@ class _PollAnswerTile extends StatelessWidget {
|
|||||||
if (val is List) {
|
if (val is List) {
|
||||||
final ids = val.whereType<String>().toList();
|
final ids = val.whereType<String>().toList();
|
||||||
if (ids.isEmpty) return '—';
|
if (ids.isEmpty) return '—';
|
||||||
final labels =
|
final labels = ids.map((id) {
|
||||||
ids.map((id) {
|
|
||||||
final opt = q.options?.firstWhere(
|
final opt = q.options?.firstWhere(
|
||||||
(o) => o.id == id,
|
(o) => o.id == id,
|
||||||
orElse: () => SnPollOption(id: id, label: '#$id', order: 0),
|
orElse: () => SnPollOption(id: id, label: '#$id', order: 0),
|
||||||
@@ -197,8 +194,7 @@ class _PollAnswerTile extends StatelessWidget {
|
|||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
// Submit date/time (title)
|
// Submit date/time (title)
|
||||||
final submitText =
|
final submitText = answer.account == null
|
||||||
answer.account == null
|
|
||||||
? answer.createdAt.formatSystem()
|
? answer.createdAt.formatSystem()
|
||||||
: '${answer.account!.nick} · ${answer.createdAt.formatSystem()}';
|
: '${answer.account!.nick} · ${answer.createdAt.formatSystem()}';
|
||||||
|
|
||||||
@@ -237,8 +233,7 @@ class _PollAnswerTile extends StatelessWidget {
|
|||||||
return ListTile(
|
return ListTile(
|
||||||
contentPadding: const EdgeInsets.symmetric(horizontal: 20),
|
contentPadding: const EdgeInsets.symmetric(horizontal: 20),
|
||||||
isThreeLine: true,
|
isThreeLine: true,
|
||||||
leading:
|
leading: answer.account == null
|
||||||
answer.account == null
|
|
||||||
? const CircleAvatar(
|
? const CircleAvatar(
|
||||||
radius: 16,
|
radius: 16,
|
||||||
child: Icon(Icons.how_to_vote, size: 16),
|
child: Icon(Icons.how_to_vote, size: 16),
|
||||||
|
|||||||
Reference in New Issue
Block a user