# 4.3.0 ## Dart - **Additions** - Added `Slider` and `SliderData` classes for slider constraints - Added `SliderTimeline` and `SliderMixTimeline` for animating sliders - Added new pose system with `BoneLocal`, `BonePose`, and related classes - Added `Pose`, `Posed`, and `PosedActive` base classes for unified pose management - **Breaking changes** - **The Dart runtime is now fully auto-generated from the C runtime**, maintaining the full C++ type hierarchy with proper nullability annotations. The code generator creates 150+ Dart files in `lib/generated/` providing complete API coverage of all Spine runtime types. - All properties are now exposed as getters and setters instead of methods - API changes to match C++ naming conventions (see examples below) - Timeline `apply()` methods now take an additional `appliedPose` parameter ## Flutter - **Breaking changes** - Updated to use the new auto-generated Dart runtime with all the Dart API changes above ## Migration Examples The examples and documentation have been updated to demonstrate the minimal changes needed to migrate from 4.2 to 4.3. ### Property Access Changes **Before (4.2):** ```dart controller.skeleton.setScaleX(0.5); controller.skeleton.setScaleY(0.5); controller.skeleton.findSlot("gun")?.setColor(Color(1, 0, 0, 1)); ``` **After (4.3):** ```dart controller.skeleton.scaleX = 0.5; controller.skeleton.scaleY = 0.5; controller.skeleton.findSlot("gun")?.pose.color.set(1, 0, 0, 1); ``` ### Animation State API Changes **Before (4.2):** ```dart controller.animationState.getData().setDefaultMix(0.2); controller.animationState.setAnimationByName(0, "portal", true); controller.animationState.addAnimationByName(0, "run", true, 0); ``` **After (4.3):** ```dart controller.animationState.data.defaultMix = 0.2; controller.animationState.setAnimation(0, "portal", true); controller.animationState.addAnimation(0, "run", true, 0); ``` ### Event Access Changes **Before (4.2):** ```dart print("Event: ${event?.getData().getName()}"); print("Int value: ${event?.getIntValue()}"); print("Animation: ${entry?.getAnimation().getName()}"); ``` **After (4.3):** ```dart print("Event: ${event?.data.name}"); print("Int value: ${event?.intValue}"); print("Animation: ${entry?.animation.name}"); ``` ### Bone Transform Changes (Pose System) **Before (4.2):** ```dart final bone = controller.skeleton.findBone("crosshair")!; final parent = bone.getParent()!; final position = parent.worldToLocal(worldPosition.dx, worldPosition.dy); bone.setX(position.x); bone.setY(position.y); ``` **After (4.3):** ```dart final bone = controller.skeleton.findBone("crosshair")!; final parent = bone.parent; if (parent != null) { final position = parent.appliedPose.worldToLocal(worldPosition.dx, worldPosition.dy); bone.appliedPose.x = position.x; bone.appliedPose.y = position.y; } ``` # 4.2.36 - Support for 16KB page alignement on Android. You must specify the NDK version in the build.gradle file of your app's Android project. See https://github.com/EsotericSoftware/spine-runtimes/issues/2849 # 4.2.35 - Port of commit f1e0f0f: Fixed animation not being mixed out in some cases. # 4.2.34 - Support latest emscripten SDK (4.0.6+) via update of web_ffi # 4.2.33 - Merge fixes in spine-cpp(-lite) - Prepare for upcoming Dart/Flutter releases, see https://github.com/EsotericSoftware/spine-runtimes/pull/2690 # 4.2.32 - Fix spine-flutter spec checksum in `Podfile.lock`, keeping version control cleaner. See https://github.com/EsotericSoftware/spine-runtimes/pull/2609 # 4.2.31 - Fix bug in IKConstraint leading to NaNs. # 4.2.30 - Switch to spine-cpp SkeletonRenderer # 4.2.29 - Fix issue in pubspec.yaml related to C++ include paths. # 4.2.28 - Fix incompatibility with Gradle 8.x. See https://github.com/EsotericSoftware/spine-runtimes/issues/2553 # 4.2.27 - Fixes clipping in case of colinear clipping edges. # 4.2.26 - `Skeleton.getBounds()` takes clipping into consideration. # 4.2.25 - Switch to spine-cpp-lite # 4.2.24 - Support static linking of native library, see https://github.com/EsotericSoftware/spine-runtimes/issues/2438 # 4.2.23 - Physics support # 4.2.22 - Fix multiply blend mode, see https://esotericsoftware.com/forum/d/25369-spine-flutter-slot%E6%B7%B7%E5%90%88%E6%A8%A1%E5%BC%8F%E5%90%8Ealpha%E4%B8%A2%E5%A4%B1/2 # 4.2.21 - FilterQuality for texture atlas pages is now set to medium. It is configurable via `Atlas.filterQuality`. See https://github.com/EsotericSoftware/spine-runtimes/issues/2362 - Track Entry listeners are now invoked properly, see https://github.com/EsotericSoftware/spine-runtimes/issues/2349 # 4.2.20 - Fixed clipping bug, see https://github.com/EsotericSoftware/spine-runtimes/issues/2431 # 4.2.19 - Fixes #2412, single bone, translation only IK constraints did not take skeleton scale into account. # 4.2.18 - Fixes compilation errors due to API change in Flutter 3.16.0, see [this issue](https://github.com/EsotericSoftware/spine-runtimes/issues/2420). **Note**: Depending on this version requires your project to depend on Flutter >= 3.16.0 as well. # 4.1.14 - Temporary "fix" for https://github.com/EsotericSoftware/spine-runtimes/issues/2479. It appears the canvaskit backend of Flutter has a bug. We currently do not set a `FilterQuality` anymore. The Flutter rendering backend is supposed to pick a good one depending the platform. Users can still set `FilterQuality` globally via `Atlas.filterQuality` as before. # 4.1.13 - Fix multiply blend mode, see https://esotericsoftware.com/forum/d/25369-spine-flutter-slot%E6%B7%B7%E5%90%88%E6%A8%A1%E5%BC%8F%E5%90%8Ealpha%E4%B8%A2%E5%A4%B1/2 # 4.1.12 - FilterQuality for texture atlas pages is now set to medium. It is configurable via `Atlas.filterQuality`. See https://github.com/EsotericSoftware/spine-runtimes/issues/2362 - Track Entry listeners are now invoked properly, see https://github.com/EsotericSoftware/spine-runtimes/issues/2349 # 4.1.11 - Fixed clipping bug, see https://github.com/EsotericSoftware/spine-runtimes/issues/2431 # 4.1.10 - Update WASM binaries # 4.1.9 \*Fixes #2412, single bone, translation only IK constraints did not take skeleton scale into account. # 4.1.8 - Fixes compilation errors due to API change in Flutter 3.16.0, see [this issue](https://github.com/EsotericSoftware/spine-runtimes/issues/2420). **Note**: Depending on this version requires your project to depend on Flutter >= 3.16.0 as well. # 4.2.17 - Fix allocation patter for temporary structs on Windows, which resulted in a hard crash without a stack trace on the native side. # 4.1.7 - Fix allocation patter for temporary structs on Windows, which resulted in a hard crash without a stack trace on the native side. # 4.2.16 - Fixed bug in path handling on Windows. # 4.1.6 - Fixed bug in path handling on Windows. # 4.2.15 - Updated http dependency to 1.1.0 # 4.1.5 - Updated http dependency to 1.1.0 # 4.2.14 - Merge changes from 4.1.4. # 4.1.4 - Fixes for WASM/web builds. # 4.2.13 - Fixes for Impeller. # 4.1.3 - Fixes for Impeller. # 4.2.12 - Merge changes from 4.1.1 and 4.1.2. # 4.1.2 - API documentation and minor cosmetics. # 4.1.1 - Backport to 4.1 spine-runtimes branch. - Blend mode support. - Hot-reload support. The underlying `SkeletonDrawable` will be retained if the asset file names and type provided to the `SpineWidget` constructor has not changed. # 4.2.11 - Update README.md with setup and development instructions. # 4.2.10 - Update README.md to point to Junji's Dart-only Spine runtime. # 4.2.9 - Fix atlas parsing. # 4.2.8 - Change reversed positional argument order in `SpineWidget` constructors. # 4.2.7 - Change package name from `esotericsoftware_spine_flutter` to `spine_flutter`. # 4.2.6 - Fix analyzer errors, fix code style to adhere to Dart standards. # 4.2.5 - Implemented batching of render commands, reducing the number of draw calls. 60/120fps for 100 Spineboys on all platforms. # 0.0.4 - Clean-up `fromAsset()` factory methods so the atlas comes before skeleton data file name. - Rename `Vector2` to `Vec2`. - Make the bundle configurable in `SpineWidget.asset()`. # 0.0.3 - Lower macOS deployment target to 10.11. # 0.0.2 - Fix package name in build system `spine_flutter` > `esotericsoftware_spine_flutter`. # 0.0.1 Initial test release.