Skip to content

Commit

Permalink
Add preview and viewing to Downloader page
Browse files Browse the repository at this point in the history
  • Loading branch information
normalllll committed Aug 26, 2024
1 parent b7fbfe7 commit 49b3971
Show file tree
Hide file tree
Showing 2 changed files with 65 additions and 28 deletions.
89 changes: 61 additions & 28 deletions lib/pages/downloader/download_task.dart
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:yande_gui/components/yande_image/yande_image.dart';
import 'package:yande_gui/pages/downloader/logic.dart';
import 'package:yande_gui/pages/post_detail/post_detail_page.dart';

class DownloadTaskWidget extends ConsumerWidget {
final DownloadTaskProvider provider;
Expand All @@ -11,34 +13,65 @@ class DownloadTaskWidget extends ConsumerWidget {
@override
Widget build(BuildContext context, WidgetRef ref) {
final state = ref.watch(provider);
return Card(
child: ListTile(
title: Text(state.post.id.toString()),
subtitle: LinearProgressIndicator(value: state.progress),
trailing: switch (state.type) {
DownloadTaskStateType.idle => GestureDetector(
behavior: HitTestBehavior.opaque,
onTap: () {
ref.read(provider.notifier).doDownload();
},
child: const Icon(Icons.download_outlined),
),
DownloadTaskStateType.busy => const CupertinoActivityIndicator(),
DownloadTaskStateType.completed => GestureDetector(
behavior: HitTestBehavior.opaque,
onTap: () {
ref.read(provider.notifier).doDownload(retry: true);
},
child: const Icon(Icons.check_outlined),
),
DownloadTaskStateType.failed => GestureDetector(
behavior: HitTestBehavior.opaque,
onTap: () {
ref.read(provider.notifier).doDownload(retry: true);
},
child: const Icon(Icons.error_outline),
),
},
return InkWell(
borderRadius: BorderRadius.circular(12),
onTap: () {
Navigator.of(context).push(MaterialPageRoute(builder: (context) => PostDetailPage(post: provider.post)));
},
child: Card(
child: Padding(
padding: const EdgeInsets.all(8),
child: Row(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
YandeImage(provider.post.previewUrl, width: 150, height: 150),
const SizedBox(width: 20),
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
children: [
Text(
'ID:${provider.post.id}',
style: const TextStyle(fontSize: 20),
),
const SizedBox(width: 20),
switch (state.type) {
DownloadTaskStateType.idle => GestureDetector(
behavior: HitTestBehavior.opaque,
onTap: () {
ref.read(provider.notifier).doDownload();
},
child: const Icon(Icons.download_outlined),
),
DownloadTaskStateType.busy => const CupertinoActivityIndicator(),
DownloadTaskStateType.completed => GestureDetector(
behavior: HitTestBehavior.opaque,
onTap: () {
ref.read(provider.notifier).doDownload(retry: true);
},
child: const Icon(Icons.check_outlined),
),
DownloadTaskStateType.failed => GestureDetector(
behavior: HitTestBehavior.opaque,
onTap: () {
ref.read(provider.notifier).doDownload(retry: true);
},
child: const Icon(Icons.error_outline),
),
}
],
),
const SizedBox(height: 10),
LinearProgressIndicator(value: state.progress),
],
),
),
],
),
),
),
);
}
Expand Down
4 changes: 4 additions & 0 deletions lib/pages/downloader/logic.dart
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import 'dart:io';

import 'package:device_info_plus/device_info_plus.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter_easyloading/flutter_easyloading.dart';
import 'package:permission_handler/permission_handler.dart';
import 'package:riverpod_annotation/riverpod_annotation.dart';
Expand Down Expand Up @@ -154,6 +155,9 @@ class DownloadTask extends _$DownloadTask {
state = state.copyWith(type: DownloadTaskStateType.completed);
} catch (e) {
EasyLoading.showError(i18n.downloader.messages.saveFailedWith(state.post.id));
if(kDebugMode){
print(e);
}
state = state.copyWith(type: DownloadTaskStateType.failed);
}
}).catchError((e) {
Expand Down

0 comments on commit 49b3971

Please sign in to comment.