ui improvements and lint fixes
This commit is contained in:
@@ -153,14 +153,14 @@ Future<List<AddonListing>> searchAddonListings(
|
|||||||
if (trimmed.isEmpty) {
|
if (trimmed.isEmpty) {
|
||||||
return ref.watch(featuredAddonListingsProvider(app).future);
|
return ref.watch(featuredAddonListingsProvider(app).future);
|
||||||
}
|
}
|
||||||
return ref.read(addonServiceProvider).searchAddonListings(
|
return ref
|
||||||
query: trimmed,
|
.read(addonServiceProvider)
|
||||||
app: app,
|
.searchAddonListings(query: trimmed, app: app);
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Riverpod(keepAlive: true)
|
@Riverpod(keepAlive: true)
|
||||||
class AddonStoreAppFilter extends _$AddonStoreAppFilter {
|
class AddonStoreAppFilter extends _$AddonStoreAppFilter {
|
||||||
|
// ignore: use_setters_to_change_properties
|
||||||
void setApp(AddonStoreApp app) => state = app;
|
void setApp(AddonStoreApp app) => state = app;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|||||||
@@ -589,9 +589,9 @@ class _DescriptionCard extends ConsumerWidget {
|
|||||||
: MarkdownBody(
|
: MarkdownBody(
|
||||||
data: markdown,
|
data: markdown,
|
||||||
selectable: true,
|
selectable: true,
|
||||||
onTapLink: (text, href, title) {
|
onTapLink: (text, href, title) async {
|
||||||
if (href != null && href.isNotEmpty) {
|
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) {
|
itemBuilder: (context, index) {
|
||||||
final p = previews[index];
|
final p = previews[index];
|
||||||
return GestureDetector(
|
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(
|
child: ClipRRect(
|
||||||
borderRadius: BorderRadius.circular(8),
|
borderRadius: BorderRadius.circular(8),
|
||||||
child: Image.network(
|
child: Hero(
|
||||||
p.thumbnailUrl ?? p.imageUrl,
|
tag: p.imageUrl,
|
||||||
fit: BoxFit.cover,
|
child: Image.network(
|
||||||
errorBuilder: (_, _, _) => Container(
|
p.thumbnailUrl ?? p.imageUrl,
|
||||||
width: 300,
|
fit: BoxFit.cover,
|
||||||
color: Theme.of(context).colorScheme.surfaceContainerHighest,
|
errorBuilder: (_, _, _) => Container(
|
||||||
child: const Icon(Icons.broken_image_outlined),
|
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 {
|
class _ExpandableDescription extends HookConsumerWidget {
|
||||||
@@ -311,8 +302,8 @@ class _ExpandableDescription extends HookConsumerWidget {
|
|||||||
skipLoadingOnReload: true,
|
skipLoadingOnReload: true,
|
||||||
data: (markdown) => MarkdownBody(
|
data: (markdown) => MarkdownBody(
|
||||||
data: markdown.isEmpty ? html : markdown,
|
data: markdown.isEmpty ? html : markdown,
|
||||||
onTapLink: (_, href, _) {
|
onTapLink: (_, href, _) async {
|
||||||
if (href != null) launchUrl(Uri.parse(href));
|
if (href != null) await launchUrl(Uri.parse(href));
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
loading: () => Text(html),
|
loading: () => Text(html),
|
||||||
|
|||||||
@@ -80,7 +80,7 @@ final class DefaultSearchBangProvider
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
String _$defaultSearchBangHash() => r'39c5b18231a56763e2c620cae5f2889f7c95f6ee';
|
String _$defaultSearchBangHash() => r'2da8ec4ccd0da74a7242a83ef4efe53850293116';
|
||||||
|
|
||||||
@ProviderFor(bangData)
|
@ProviderFor(bangData)
|
||||||
final bangDataProvider = BangDataFamily._();
|
final bangDataProvider = BangDataFamily._();
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ import 'package:weblibre/core/logger.dart';
|
|||||||
import 'package:weblibre/features/web_feed/presentation/controllers/fetch_articles.dart';
|
import 'package:weblibre/features/web_feed/presentation/controllers/fetch_articles.dart';
|
||||||
|
|
||||||
@pragma('vm:entry-point')
|
@pragma('vm:entry-point')
|
||||||
Future<void> backgroundFetch(HeadlessTask task) async {
|
Future<void> backgroundFetch(HeadlessEvent task) async {
|
||||||
final taskId = task.taskId;
|
final taskId = task.taskId;
|
||||||
|
|
||||||
final isTimeout = task.timeout;
|
final isTimeout = task.timeout;
|
||||||
|
|||||||
Reference in New Issue
Block a user