🐛 Bug fixes and optimize image display
This commit is contained in:
		| @@ -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<String, String> mimetypeOverrides = { | ||||
|   | ||||
| @@ -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'; | ||||
|   } | ||||
|  | ||||
|   | ||||
| @@ -73,7 +73,7 @@ class _LoginScreenState extends State<LoginScreen> { | ||||
|                   onTicket: (p0) => setState(() { | ||||
|                     _currentTicket = p0; | ||||
|                   }), | ||||
|                   onNext: (p0) => setState(() { | ||||
|                   onNext: () => setState(() { | ||||
|                     _period = 1; | ||||
|                   }), | ||||
|                 ), | ||||
|   | ||||
| @@ -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, | ||||
|   | ||||
							
								
								
									
										44
									
								
								pubspec.lock
									
									
									
									
									
								
							
							
						
						
									
										44
									
								
								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: | ||||
|   | ||||
		Reference in New Issue
	
	Block a user