diff --git a/.gitignore b/.gitignore index 8fd54ed56..c13cfea23 100644 --- a/.gitignore +++ b/.gitignore @@ -39,6 +39,7 @@ version # Flutter/Dart/Pub related **/doc/api/ +**/pubspec_overrides.yaml .dart_tool/ .flutter-plugins .packages diff --git a/cached_network_image/CHANGELOG.md b/cached_network_image/CHANGELOG.md index d95669a25..cc7905e53 100644 --- a/cached_network_image/CHANGELOG.md +++ b/cached_network_image/CHANGELOG.md @@ -1,3 +1,15 @@ +## [4.0.0] - 2026-08-25 + +### Breaking changes + +* Requires Flutter `>=3.44.0` and Dart `^3.12.0` (via `material_ui` dependency) +* Replaces `flutter/material.dart` with `material_ui` across all packages for Wasm compatibility + +### Other changes + +* Exclude platform folders from analyzer configuration +* Fix `FakeTicker` test helper for newer Flutter versions + ## [3.4.1] - 2024-08-13 * Target js_interop for Wasm support diff --git a/cached_network_image/analysis_options.yaml b/cached_network_image/analysis_options.yaml index f9b303465..743e05ad8 100644 --- a/cached_network_image/analysis_options.yaml +++ b/cached_network_image/analysis_options.yaml @@ -1 +1,10 @@ +analyzer: + exclude: + - build/** + - android/** + - ios/** + - web/** + - windows/** + - macos/** + - linux/** include: package:flutter_lints/flutter.yaml diff --git a/cached_network_image/example/analysis_options.yaml b/cached_network_image/example/analysis_options.yaml index f9b303465..743e05ad8 100644 --- a/cached_network_image/example/analysis_options.yaml +++ b/cached_network_image/example/analysis_options.yaml @@ -1 +1,10 @@ +analyzer: + exclude: + - build/** + - android/** + - ios/** + - web/** + - windows/** + - macos/** + - linux/** include: package:flutter_lints/flutter.yaml diff --git a/cached_network_image/example/lib/main.dart b/cached_network_image/example/lib/main.dart index f09ab3f6e..57af30998 100644 --- a/cached_network_image/example/lib/main.dart +++ b/cached_network_image/example/lib/main.dart @@ -2,7 +2,7 @@ import 'dart:io'; import 'package:baseflow_plugin_template/baseflow_plugin_template.dart'; import 'package:cached_network_image/cached_network_image.dart'; -import 'package:flutter/material.dart'; +import 'package:material_ui/material_ui.dart'; import 'package:flutter_blurhash/flutter_blurhash.dart'; void main() { diff --git a/cached_network_image/example/linux/flutter/generated_plugins.cmake b/cached_network_image/example/linux/flutter/generated_plugins.cmake index f16b4c342..df8d2f723 100644 --- a/cached_network_image/example/linux/flutter/generated_plugins.cmake +++ b/cached_network_image/example/linux/flutter/generated_plugins.cmake @@ -7,6 +7,7 @@ list(APPEND FLUTTER_PLUGIN_LIST ) list(APPEND FLUTTER_FFI_PLUGIN_LIST + jni ) set(PLUGIN_BUNDLED_LIBRARIES) diff --git a/cached_network_image/example/macos/Flutter/GeneratedPluginRegistrant.swift b/cached_network_image/example/macos/Flutter/GeneratedPluginRegistrant.swift index d24127f3b..645e27da5 100644 --- a/cached_network_image/example/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/cached_network_image/example/macos/Flutter/GeneratedPluginRegistrant.swift @@ -5,12 +5,10 @@ import FlutterMacOS import Foundation -import path_provider_foundation -import sqflite +import sqflite_darwin import url_launcher_macos func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { - PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin")) SqflitePlugin.register(with: registry.registrar(forPlugin: "SqflitePlugin")) UrlLauncherPlugin.register(with: registry.registrar(forPlugin: "UrlLauncherPlugin")) } diff --git a/cached_network_image/example/pubspec.yaml b/cached_network_image/example/pubspec.yaml index 9a9e108e6..a22af3e36 100644 --- a/cached_network_image/example/pubspec.yaml +++ b/cached_network_image/example/pubspec.yaml @@ -15,6 +15,7 @@ dependencies: sdk: flutter flutter_blurhash: ^0.8.2 + material_ui: ^1.0.0 dev_dependencies: flutter_test: sdk: flutter diff --git a/cached_network_image/example/pubspec_overrides.yaml b/cached_network_image/example/pubspec_overrides.yaml deleted file mode 100644 index b35b0bed0..000000000 --- a/cached_network_image/example/pubspec_overrides.yaml +++ /dev/null @@ -1,7 +0,0 @@ -dependency_overrides: - cached_network_image_platform_interface: - path: - ../../cached_network_image_platform_interface - cached_network_image_web: - path: - ../../cached_network_image_web diff --git a/cached_network_image/example/windows/flutter/generated_plugins.cmake b/cached_network_image/example/windows/flutter/generated_plugins.cmake index 88b22e5c7..a962892f6 100644 --- a/cached_network_image/example/windows/flutter/generated_plugins.cmake +++ b/cached_network_image/example/windows/flutter/generated_plugins.cmake @@ -7,6 +7,7 @@ list(APPEND FLUTTER_PLUGIN_LIST ) list(APPEND FLUTTER_FFI_PLUGIN_LIST + jni ) set(PLUGIN_BUNDLED_LIBRARIES) diff --git a/cached_network_image/lib/src/cached_image_widget.dart b/cached_network_image/lib/src/cached_image_widget.dart index 2de02658d..08ef4f252 100644 --- a/cached_network_image/lib/src/cached_image_widget.dart +++ b/cached_network_image/lib/src/cached_image_widget.dart @@ -1,6 +1,6 @@ import 'package:cached_network_image/cached_network_image.dart'; import 'package:cached_network_image_platform_interface/cached_network_image_platform_interface.dart'; -import 'package:flutter/material.dart'; +import 'package:material_ui/material_ui.dart'; import 'package:flutter/widgets.dart'; import 'package:flutter_cache_manager/flutter_cache_manager.dart'; import 'package:octo_image/octo_image.dart'; diff --git a/cached_network_image/lib/src/image_provider/_image_loader.dart b/cached_network_image/lib/src/image_provider/_image_loader.dart index 01f11ef9f..39a0a3b73 100644 --- a/cached_network_image/lib/src/image_provider/_image_loader.dart +++ b/cached_network_image/lib/src/image_provider/_image_loader.dart @@ -7,7 +7,7 @@ import 'package:cached_network_image_platform_interface/cached_network_image_pla import 'package:cached_network_image_platform_interface' '/cached_network_image_platform_interface.dart' as platform show ImageLoader; -import 'package:flutter/material.dart'; +import 'package:material_ui/material_ui.dart'; import 'package:flutter_cache_manager/flutter_cache_manager.dart'; /// ImageLoader class to load images on IO platforms. diff --git a/cached_network_image/lib/src/image_provider/cached_network_image_provider.dart b/cached_network_image/lib/src/image_provider/cached_network_image_provider.dart index 5dc3b908f..36dcc33b5 100644 --- a/cached_network_image/lib/src/image_provider/cached_network_image_provider.dart +++ b/cached_network_image/lib/src/image_provider/cached_network_image_provider.dart @@ -9,7 +9,7 @@ import 'package:cached_network_image_platform_interface/cached_network_image_pla if (dart.library.js_interop) 'package:cached_network_image_web/cached_network_image_web.dart' show ImageLoader; import 'package:flutter/foundation.dart'; -import 'package:flutter/material.dart'; +import 'package:material_ui/material_ui.dart'; import 'package:flutter_cache_manager/flutter_cache_manager.dart'; /// IO implementation of the CachedNetworkImageProvider; the ImageProvider to diff --git a/cached_network_image/pubspec.yaml b/cached_network_image/pubspec.yaml index da9e640f5..292161b36 100644 --- a/cached_network_image/pubspec.yaml +++ b/cached_network_image/pubspec.yaml @@ -6,20 +6,21 @@ topics: - cache - image - network-image -version: 3.4.1 +version: 4.0.0 environment: - sdk: ^3.0.0 - flutter: '>=3.10.0' + sdk: ^3.12.0 + flutter: '>=3.44.0' dependencies: - cached_network_image_platform_interface: ^4.1.1 - cached_network_image_web: ^1.3.1 + cached_network_image_platform_interface: ^5.0.0 + cached_network_image_web: ^2.0.0 flutter: sdk: flutter flutter_cache_manager: ^3.4.1 octo_image: ^2.1.0 + material_ui: ^1.0.0 dev_dependencies: file: '>=7.0.0 <8.0.0' flutter_lints: ^4.0.0 diff --git a/cached_network_image/test/image_widget_test.dart b/cached_network_image/test/image_widget_test.dart index a297dd138..d3aeb257d 100644 --- a/cached_network_image/test/image_widget_test.dart +++ b/cached_network_image/test/image_widget_test.dart @@ -1,5 +1,5 @@ import 'package:cached_network_image/cached_network_image.dart'; -import 'package:flutter/material.dart'; +import 'package:material_ui/material_ui.dart'; import 'package:flutter_test/flutter_test.dart'; import 'fake_cache_manager.dart'; diff --git a/cached_network_image/test/rendering_tester.dart b/cached_network_image/test/rendering_tester.dart index 23ee78b0d..faae53159 100644 --- a/cached_network_image/test/rendering_tester.dart +++ b/cached_network_image/test/rendering_tester.dart @@ -311,6 +311,9 @@ class FakeTicker implements Ticker { style: DiagnosticsTreeStyle.errorProperty, ); } + + @override + bool forceFrames = false; } class TestClipPaintingContext extends PaintingContext { diff --git a/cached_network_image_platform_interface/CHANGELOG.md b/cached_network_image_platform_interface/CHANGELOG.md index 084b384fb..a8d9f2b11 100644 --- a/cached_network_image_platform_interface/CHANGELOG.md +++ b/cached_network_image_platform_interface/CHANGELOG.md @@ -1,3 +1,14 @@ +## [5.0.0] - 2026-08-25 + +### Breaking changes + +* Requires Flutter `>=3.44.0` and Dart `^3.12.0` (via `material_ui` dependency) +* Replaces `flutter/material.dart` with `material_ui` for Wasm compatibility + +### Other changes + +* Exclude platform folders from analyzer configuration + ## [4.1.1] - 2024-08-13 * Target js_interop for Wasm support diff --git a/cached_network_image_platform_interface/analysis_options.yaml b/cached_network_image_platform_interface/analysis_options.yaml index f9b303465..743e05ad8 100644 --- a/cached_network_image_platform_interface/analysis_options.yaml +++ b/cached_network_image_platform_interface/analysis_options.yaml @@ -1 +1,10 @@ +analyzer: + exclude: + - build/** + - android/** + - ios/** + - web/** + - windows/** + - macos/** + - linux/** include: package:flutter_lints/flutter.yaml diff --git a/cached_network_image_platform_interface/lib/cached_network_image_platform_interface.dart b/cached_network_image_platform_interface/lib/cached_network_image_platform_interface.dart index 6f85606ce..541660033 100644 --- a/cached_network_image_platform_interface/lib/cached_network_image_platform_interface.dart +++ b/cached_network_image_platform_interface/lib/cached_network_image_platform_interface.dart @@ -4,7 +4,7 @@ library cached_network_image_platform_interface; import 'dart:async'; import 'dart:ui' as ui; -import 'package:flutter/material.dart'; +import 'package:material_ui/material_ui.dart'; import 'package:flutter_cache_manager/flutter_cache_manager.dart'; /// Listener for errors diff --git a/cached_network_image_platform_interface/pubspec.yaml b/cached_network_image_platform_interface/pubspec.yaml index d76725230..43bba1e15 100644 --- a/cached_network_image_platform_interface/pubspec.yaml +++ b/cached_network_image_platform_interface/pubspec.yaml @@ -1,17 +1,18 @@ name: cached_network_image_platform_interface description: Platform interface for CachedNetworkImage -version: 4.1.1 +version: 5.0.0 homepage: https://github.com/Baseflow/flutter_cached_network_image environment: - sdk: ^3.0.0 - flutter: '>=3.10.0' + sdk: ^3.12.0 + flutter: '>=3.44.0' dependencies: flutter: sdk: flutter flutter_cache_manager: ^3.4.1 + material_ui: ^1.0.0 dev_dependencies: file: '>=7.0.0 <8.0.0' flutter_lints: ^4.0.0 diff --git a/cached_network_image_web/CHANGELOG.md b/cached_network_image_web/CHANGELOG.md index e8f059f30..0738126a5 100644 --- a/cached_network_image_web/CHANGELOG.md +++ b/cached_network_image_web/CHANGELOG.md @@ -1,3 +1,15 @@ +## [2.0.0] - 2026-08-25 + +### Breaking changes + +* Requires Flutter `>=3.44.0` and Dart `^3.12.0` (via `material_ui` dependency) +* Replaces `flutter/material.dart` with `material_ui` for Wasm compatibility +* Use conditional imports for `createImageCodecFromUrl` so VM tests can compile + +### Other changes + +* Exclude platform folders from analyzer configuration + ## [1.3.1] - 2024-08-13 * Target js_interop for Wasm support diff --git a/cached_network_image_web/analysis_options.yaml b/cached_network_image_web/analysis_options.yaml index f9b303465..743e05ad8 100644 --- a/cached_network_image_web/analysis_options.yaml +++ b/cached_network_image_web/analysis_options.yaml @@ -1 +1,10 @@ +analyzer: + exclude: + - build/** + - android/** + - ios/** + - web/** + - windows/** + - macos/** + - linux/** include: package:flutter_lints/flutter.yaml diff --git a/cached_network_image_web/lib/cached_network_image_web.dart b/cached_network_image_web/lib/cached_network_image_web.dart index 9b7449c69..385994f2e 100644 --- a/cached_network_image_web/lib/cached_network_image_web.dart +++ b/cached_network_image_web/lib/cached_network_image_web.dart @@ -4,14 +4,16 @@ library cached_network_image_web; import 'dart:async'; import 'dart:typed_data'; import 'dart:ui' as ui; -import 'dart:ui_web'; import 'package:cached_network_image_platform_interface' '/cached_network_image_platform_interface.dart' as platform show ImageLoader, ImageRenderMethodForWeb; -import 'package:flutter/material.dart'; +import 'package:material_ui/material_ui.dart'; import 'package:flutter_cache_manager/flutter_cache_manager.dart'; +import 'src/create_image_codec_from_url_stub.dart' + if (dart.library.ui_web) 'src/create_image_codec_from_url_web.dart'; + enum _State { open, waitingForData, closing } /// ImageLoader class to load images on the web platform. @@ -188,7 +190,6 @@ class ImageLoader implements platform.ImageLoader { StreamController chunkEvents, ) { final resolved = Uri.base.resolve(url); - // ignore: undefined_function return createImageCodecFromUrl( resolved, chunkCallback: (int bytes, int total) { diff --git a/cached_network_image_web/lib/src/create_image_codec_from_url_stub.dart b/cached_network_image_web/lib/src/create_image_codec_from_url_stub.dart new file mode 100644 index 000000000..b77c1de4f --- /dev/null +++ b/cached_network_image_web/lib/src/create_image_codec_from_url_stub.dart @@ -0,0 +1,11 @@ +import 'dart:ui' as ui; + +Future createImageCodecFromUrl( + Uri url, { + void Function(int cumulativeBytesLoaded, int expectedTotalBytes)? + chunkCallback, +}) { + throw UnsupportedError( + 'createImageCodecFromUrl is only available on web', + ); +} diff --git a/cached_network_image_web/lib/src/create_image_codec_from_url_web.dart b/cached_network_image_web/lib/src/create_image_codec_from_url_web.dart new file mode 100644 index 000000000..dcab4f2fd --- /dev/null +++ b/cached_network_image_web/lib/src/create_image_codec_from_url_web.dart @@ -0,0 +1,13 @@ +import 'dart:ui' as ui; +import 'dart:ui_web' as ui_web; + +Future createImageCodecFromUrl( + Uri url, { + void Function(int cumulativeBytesLoaded, int expectedTotalBytes)? + chunkCallback, +}) { + return ui_web.createImageCodecFromUrl( + url, + chunkCallback: chunkCallback, + ); +} diff --git a/cached_network_image_web/pubspec.yaml b/cached_network_image_web/pubspec.yaml index 7bee1696f..9a68a9738 100644 --- a/cached_network_image_web/pubspec.yaml +++ b/cached_network_image_web/pubspec.yaml @@ -1,19 +1,20 @@ name: cached_network_image_web description: Web implementation of CachedNetworkImage -version: 1.3.1 +version: 2.0.0 homepage: https://github.com/Baseflow/flutter_cached_network_image environment: - sdk: ^3.0.0 - flutter: '>=3.10.0' + sdk: ^3.12.0 + flutter: '>=3.44.0' dependencies: - cached_network_image_platform_interface: ^4.1.1 + cached_network_image_platform_interface: ^5.0.0 flutter: sdk: flutter flutter_cache_manager: ^3.4.1 web: ^1.0.0 + material_ui: ^1.0.0 dev_dependencies: file: '>=7.0.0 <8.0.0' flutter_lints: ^4.0.0