From 468d1377af0503aaa97e097a4c37548b778077d5 Mon Sep 17 00:00:00 2001 From: LittleSheep Date: Wed, 13 Nov 2024 00:13:27 +0800 Subject: [PATCH] :bug: Bug fixes and optimize image display --- lib/providers/sn_attachment.dart | 10 ++++- lib/providers/sn_network.dart | 2 +- lib/screens/auth/login.dart | 2 +- lib/widgets/universal_image.dart | 68 ++++++-------------------------- pubspec.lock | 44 ++++++++++----------- 5 files changed, 43 insertions(+), 83 deletions(-) diff --git a/lib/providers/sn_attachment.dart b/lib/providers/sn_attachment.dart index 67cefbc..e06dc71 100644 --- a/lib/providers/sn_attachment.dart +++ b/lib/providers/sn_attachment.dart @@ -44,12 +44,18 @@ class SnAttachmentProvider { 'take': pendingFetch.length, 'id': pendingFetch.join(','), }); - final out = resp.data['data'].map((e) => SnAttachment.fromJson(e)).toList(); + final out = resp.data['data'] + .where((e) => e['id'] != 0) + .map((e) => SnAttachment.fromJson(e)) + .toList(); for (var i = 0; i < out.length; i++) { _cache[pendingFetch[i]] = out[i]; } - return rids.map((rid) => _cache[rid]!).toList(); + return rids + .where((rid) => _cache.containsKey(rid)) + .map((rid) => _cache[rid]!) + .toList(); } static Map mimetypeOverrides = { diff --git a/lib/providers/sn_network.dart b/lib/providers/sn_network.dart index 22a21f0..cfbd7a7 100644 --- a/lib/providers/sn_network.dart +++ b/lib/providers/sn_network.dart @@ -100,7 +100,7 @@ class SnNetworkProvider { } String getAttachmentUrl(String ky) { - if (ky.startsWith("http://")) return ky; + if (ky.startsWith("http")) return ky; return '${client.options.baseUrl}/cgi/uc/attachments/$ky'; } diff --git a/lib/screens/auth/login.dart b/lib/screens/auth/login.dart index 578ad19..59f2d13 100644 --- a/lib/screens/auth/login.dart +++ b/lib/screens/auth/login.dart @@ -73,7 +73,7 @@ class _LoginScreenState extends State { onTicket: (p0) => setState(() { _currentTicket = p0; }), - onNext: (p0) => setState(() { + onNext: () => setState(() { _period = 1; }), ), diff --git a/lib/widgets/universal_image.dart b/lib/widgets/universal_image.dart index d709f29..5eb6f11 100644 --- a/lib/widgets/universal_image.dart +++ b/lib/widgets/universal_image.dart @@ -30,67 +30,21 @@ class UniversalImage extends StatelessWidget { @override Widget build(BuildContext context) { final devicePixelRatio = MediaQuery.of(context).devicePixelRatio; + final double? resizeHeight = + cacheHeight != null ? (cacheHeight! * devicePixelRatio) : null; + final double? resizeWidth = + cacheWidth != null ? (cacheWidth! * devicePixelRatio) : null; - if (!kIsWeb && (Platform.isAndroid || Platform.isIOS || Platform.isMacOS)) { - return CachedNetworkImage( - imageUrl: url, - width: width, - height: height, - fit: fit, - memCacheHeight: cacheHeight != null - ? (cacheHeight! * devicePixelRatio).round() - : null, - memCacheWidth: cacheWidth != null - ? (cacheWidth! * devicePixelRatio).round() - : null, - progressIndicatorBuilder: noProgressIndicator - ? null - : (context, url, downloadProgress) => Center( - child: TweenAnimationBuilder( - tween: Tween( - begin: 0, - end: downloadProgress.progress ?? 0, - ), - duration: const Duration(milliseconds: 300), - builder: (context, value, _) => CircularProgressIndicator( - value: downloadProgress.progress != null - ? value.toDouble() - : null, - ), - ), - ), - errorWidget: noErrorWidget - ? null - : (context, url, error) { - return Container( - color: Theme.of(context).colorScheme.surface, - constraints: const BoxConstraints(maxWidth: 280), - child: Column( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - AnimateWidgetExtensions(Icon(Symbols.close, size: 24)) - .animate(onPlay: (e) => e.repeat(reverse: true)) - .fade(duration: 500.ms), - Text( - error.toString(), - textAlign: TextAlign.center, - ), - ], - ).center(), - ); - }, - ); - } - return Image.network( - url, + return Image( + image: ResizeImage( + UniversalImage.provider(url), + width: resizeWidth?.round(), + height: resizeHeight?.round(), + policy: ResizeImagePolicy.fit, + ), width: width, height: height, fit: fit, - cacheHeight: cacheHeight != null - ? (cacheHeight! * devicePixelRatio).round() - : null, - cacheWidth: - cacheWidth != null ? (cacheWidth! * devicePixelRatio).round() : null, loadingBuilder: noProgressIndicator ? null : (BuildContext context, Widget child, diff --git a/pubspec.lock b/pubspec.lock index 73d330c..ff87c1b 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -5,23 +5,23 @@ packages: dependency: transitive description: name: _fe_analyzer_shared - sha256: f256b0c0ba6c7577c15e2e4e114755640a875e885099367bf6e012b19314c834 + sha256: "16e298750b6d0af7ce8a3ba7c18c69c3785d11b15ec83f6dcd0ad2a0009b3cab" url: "https://pub.dev" source: hosted - version: "72.0.0" + version: "76.0.0" _macros: dependency: transitive description: dart source: sdk - version: "0.3.2" + version: "0.3.3" analyzer: dependency: transitive description: name: analyzer - sha256: b652861553cd3990d8ed361f7979dc6d7053a9ac8843fa73820ab68ce5410139 + sha256: "1f14db053a8c23e260789e9b0980fa27f2680dd640932cae5e1137cce0e46e1e" url: "https://pub.dev" source: hosted - version: "6.7.0" + version: "6.11.0" animations: dependency: "direct main" description: @@ -202,10 +202,10 @@ packages: dependency: "direct main" description: name: collection - sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a + sha256: a1ace0a119f20aabc852d165077c036cd864315bd99b7eaa10a60100341941bf url: "https://pub.dev" source: hosted - version: "1.18.0" + version: "1.19.0" connectivity_plus: dependency: transitive description: @@ -790,18 +790,18 @@ packages: dependency: transitive description: name: leak_tracker - sha256: "3f87a60e8c63aecc975dda1ceedbc8f24de75f09e4856ea27daf8958f2f0ce05" + sha256: c35baad643ba394b40aac41080300150a4f08fd0fd6a10378f8f7c6bc161acec url: "https://pub.dev" source: hosted - version: "10.0.5" + version: "10.0.8" leak_tracker_flutter_testing: dependency: transitive description: name: leak_tracker_flutter_testing - sha256: "932549fb305594d82d7183ecd9fa93463e9914e1b67cacc34bc40906594a1806" + sha256: f8b613e7e6a13ec79cfdc0e97638fddb3ab848452eff057653abd3edba760573 url: "https://pub.dev" source: hosted - version: "3.0.5" + version: "3.0.9" leak_tracker_testing: dependency: transitive description: @@ -838,10 +838,10 @@ packages: dependency: transitive description: name: macros - sha256: "0acaed5d6b7eab89f63350bccd82119e6c602df0f391260d0e32b5e23db79536" + sha256: "1d9e801cd66f7ea3663c45fc708450db1fa57f988142c64289142c9b7ee80656" url: "https://pub.dev" source: hosted - version: "0.1.2-main.4" + version: "0.1.3-main.0" markdown: dependency: "direct main" description: @@ -1150,7 +1150,7 @@ packages: dependency: transitive description: flutter source: sdk - version: "0.0.99" + version: "0.0.0" source_gen: dependency: transitive description: @@ -1227,10 +1227,10 @@ packages: dependency: transitive description: name: stack_trace - sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b" + sha256: "9f47fd3630d76be3ab26f0ee06d213679aa425996925ff3feffdec504931c377" url: "https://pub.dev" source: hosted - version: "1.11.1" + version: "1.12.0" stream_channel: dependency: transitive description: @@ -1251,10 +1251,10 @@ packages: dependency: transitive description: name: string_scanner - sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde" + sha256: "688af5ed3402a4bde5b3a6c15fd768dbf2621a614950b17f04626c431ab3c4c3" url: "https://pub.dev" source: hosted - version: "1.2.0" + version: "1.3.0" styled_widget: dependency: "direct main" description: @@ -1291,10 +1291,10 @@ packages: dependency: transitive description: name: test_api - sha256: "5b8a98dafc4d5c4c9c72d8b31ab2b23fc13422348d2997120294d3bac86b4ddb" + sha256: "664d3a9a64782fcdeb83ce9c6b39e78fd2971d4e37827b9b06c3aa1edc5e760c" url: "https://pub.dev" source: hosted - version: "0.7.2" + version: "0.7.3" timing: dependency: transitive description: @@ -1411,10 +1411,10 @@ packages: dependency: transitive description: name: vm_service - sha256: "5c5f338a667b4c644744b661f309fb8080bb94b18a7e91ef1dbd343bed00ed6d" + sha256: f6be3ed8bd01289b34d679c2b62226f63c0e69f9fd2e50a6b3c1c729a961041b url: "https://pub.dev" source: hosted - version: "14.2.5" + version: "14.3.0" watcher: dependency: transitive description: