spine_flutter 4.3.1
spine_flutter: ^4.3.1 copied to clipboard
The official Spine Flutter Runtime to load, display and interact with Spine animations.
4.3.1 #
Flutter #
- Additions
- Added
fromMemorymethods toAtlasFlutter,SkeletonDataFlutter,SkeletonDrawableFlutter, andSpineWidgetfor loading Spine data from custom sources (memory, encrypted storage, databases, custom caching, etc.) - Added example
load_from_memory.dartdemonstrating how to load all assets into memory and use thefromMemoryAPI
- Added
4.3.0 #
Dart #
-
Additions
- Added
SliderandSliderDataclasses for slider constraints - Added
SliderTimelineandSliderMixTimelinefor animating sliders - Added new pose system with
BoneLocal,BonePose, and related classes - Added
Pose,Posed, andPosedActivebase classes for unified pose management
- Added
-
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 additionalappliedPoseparameter
- 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
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):
controller.skeleton.setScaleX(0.5);
controller.skeleton.setScaleY(0.5);
controller.skeleton.findSlot("gun")?.setColor(Color(1, 0, 0, 1));
After (4.3):
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):
controller.animationState.getData().setDefaultMix(0.2);
controller.animationState.setAnimationByName(0, "portal", true);
controller.animationState.addAnimationByName(0, "run", true, 0);
After (4.3):
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):
print("Event: ${event?.getData().getName()}");
print("Int value: ${event?.getIntValue()}");
print("Animation: ${entry?.getAnimation().getName()}");
After (4.3):
print("Event: ${event?.data.name}");
print("Int value: ${event?.intValue}");
print("Animation: ${entry?.animation.name}");
Bone Transform Changes (Pose System) #
Before (4.2):
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):
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 #
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. 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
FilterQualityanymore. The Flutter rendering backend is supposed to pick a good one depending the platform. Users can still setFilterQualityglobally viaAtlas.filterQualityas before.
4.1.13 #
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. 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
SkeletonDrawablewill be retained if the asset file names and type provided to theSpineWidgetconstructor 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
SpineWidgetconstructors.
4.2.7 #
- Change package name from
esotericsoftware_spine_fluttertospine_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
Vector2toVec2. - 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.