ui improvements and lint fixes
This commit is contained in:
@@ -153,14 +153,14 @@ Future<List<AddonListing>> searchAddonListings(
|
||||
if (trimmed.isEmpty) {
|
||||
return ref.watch(featuredAddonListingsProvider(app).future);
|
||||
}
|
||||
return ref.read(addonServiceProvider).searchAddonListings(
|
||||
query: trimmed,
|
||||
app: app,
|
||||
);
|
||||
return ref
|
||||
.read(addonServiceProvider)
|
||||
.searchAddonListings(query: trimmed, app: app);
|
||||
}
|
||||
|
||||
@Riverpod(keepAlive: true)
|
||||
class AddonStoreAppFilter extends _$AddonStoreAppFilter {
|
||||
// ignore: use_setters_to_change_properties
|
||||
void setApp(AddonStoreApp app) => state = app;
|
||||
|
||||
@override
|
||||
|
||||
@@ -589,9 +589,9 @@ class _DescriptionCard extends ConsumerWidget {
|
||||
: MarkdownBody(
|
||||
data: markdown,
|
||||
selectable: true,
|
||||
onTapLink: (text, href, title) {
|
||||
onTapLink: (text, href, title) async {
|
||||
if (href != null && href.isNotEmpty) {
|
||||
launchUrl(Uri.parse(href));
|
||||
await launchUrl(Uri.parse(href));
|
||||
}
|
||||
},
|
||||
),
|
||||
|
||||
@@ -249,16 +249,37 @@ class _ScreenshotsSection extends StatelessWidget {
|
||||
itemBuilder: (context, index) {
|
||||
final p = previews[index];
|
||||
return GestureDetector(
|
||||
onTap: () => _showFullScreenImage(context, p.imageUrl),
|
||||
onTap: () => showDialog<void>(
|
||||
context: context,
|
||||
barrierColor: Colors.black87,
|
||||
builder: (context) => Dialog(
|
||||
backgroundColor: Colors.transparent,
|
||||
insetPadding: EdgeInsets.zero,
|
||||
child: GestureDetector(
|
||||
onTap: () => Navigator.of(context).pop(),
|
||||
child: InteractiveViewer(
|
||||
child: Hero(
|
||||
tag: p.imageUrl,
|
||||
child: Image.network(p.imageUrl, fit: BoxFit.contain),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
child: ClipRRect(
|
||||
borderRadius: BorderRadius.circular(8),
|
||||
child: Image.network(
|
||||
p.thumbnailUrl ?? p.imageUrl,
|
||||
fit: BoxFit.cover,
|
||||
errorBuilder: (_, _, _) => Container(
|
||||
width: 300,
|
||||
color: Theme.of(context).colorScheme.surfaceContainerHighest,
|
||||
child: const Icon(Icons.broken_image_outlined),
|
||||
child: Hero(
|
||||
tag: p.imageUrl,
|
||||
child: Image.network(
|
||||
p.thumbnailUrl ?? p.imageUrl,
|
||||
fit: BoxFit.cover,
|
||||
errorBuilder: (_, _, _) => Container(
|
||||
width: 300,
|
||||
color: Theme.of(
|
||||
context,
|
||||
).colorScheme.surfaceContainerHighest,
|
||||
child: const Icon(Icons.broken_image_outlined),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
@@ -267,36 +288,6 @@ class _ScreenshotsSection extends StatelessWidget {
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
void _showFullScreenImage(BuildContext context, String url) {
|
||||
Navigator.of(context).push(
|
||||
PageRouteBuilder<void>(
|
||||
opaque: false,
|
||||
barrierColor: Colors.black87,
|
||||
pageBuilder: (_, _, _) => _FullScreenImage(url: url),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
class _FullScreenImage extends StatelessWidget {
|
||||
final String url;
|
||||
const _FullScreenImage({required this.url});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
backgroundColor: Colors.transparent,
|
||||
body: GestureDetector(
|
||||
onTap: () => Navigator.of(context).pop(),
|
||||
child: Center(
|
||||
child: InteractiveViewer(
|
||||
child: Image.network(url, fit: BoxFit.contain),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
class _ExpandableDescription extends HookConsumerWidget {
|
||||
@@ -311,8 +302,8 @@ class _ExpandableDescription extends HookConsumerWidget {
|
||||
skipLoadingOnReload: true,
|
||||
data: (markdown) => MarkdownBody(
|
||||
data: markdown.isEmpty ? html : markdown,
|
||||
onTapLink: (_, href, _) {
|
||||
if (href != null) launchUrl(Uri.parse(href));
|
||||
onTapLink: (_, href, _) async {
|
||||
if (href != null) await launchUrl(Uri.parse(href));
|
||||
},
|
||||
),
|
||||
loading: () => Text(html),
|
||||
|
||||
@@ -80,7 +80,7 @@ final class DefaultSearchBangProvider
|
||||
}
|
||||
}
|
||||
|
||||
String _$defaultSearchBangHash() => r'39c5b18231a56763e2c620cae5f2889f7c95f6ee';
|
||||
String _$defaultSearchBangHash() => r'2da8ec4ccd0da74a7242a83ef4efe53850293116';
|
||||
|
||||
@ProviderFor(bangData)
|
||||
final bangDataProvider = BangDataFamily._();
|
||||
|
||||
@@ -24,7 +24,7 @@ import 'package:weblibre/core/logger.dart';
|
||||
import 'package:weblibre/features/web_feed/presentation/controllers/fetch_articles.dart';
|
||||
|
||||
@pragma('vm:entry-point')
|
||||
Future<void> backgroundFetch(HeadlessTask task) async {
|
||||
Future<void> backgroundFetch(HeadlessEvent task) async {
|
||||
final taskId = task.taskId;
|
||||
|
||||
final isTimeout = task.timeout;
|
||||
|
||||
Reference in New Issue
Block a user