Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix #313 #312 onBlendModeChanged _paint LateInitializationError #314

Open
wants to merge 3 commits into
base: stable
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 10 additions & 10 deletions flare_flutter/lib/flare.dart
Original file line number Diff line number Diff line change
Expand Up @@ -310,7 +310,7 @@ class FlutterActorEllipse extends ActorEllipse with FlutterPathPointsPath {
class FlutterActorImage extends ActorImage with FlutterActorDrawable {
late Float32List _vertexBuffer;
late Float32List _uvBuffer;
late ui.Paint _paint;
ui.Paint? _paint;
ui.Vertices? _canvasVertices;
late Uint16List _indices;

Expand Down Expand Up @@ -339,7 +339,7 @@ class FlutterActorImage extends ActorImage with FlutterActorDrawable {
..blendMode = blendMode
..shader = textureIndex >= 0 && textureIndex < images.length
? ui.ImageShader(images[textureIndex], ui.TileMode.clamp,
ui.TileMode.clamp, _identityMatrix)
ui.TileMode.clamp, _identityMatrix)
: null
..filterQuality = ui.FilterQuality.low
..isAntiAlias = antialias;
Expand All @@ -366,7 +366,7 @@ class FlutterActorImage extends ActorImage with FlutterActorDrawable {
idx += 2;
}

_paint.shader = ui.ImageShader(
_paint?.shader = ui.ImageShader(
image, ui.TileMode.clamp, ui.TileMode.clamp, _identityMatrix);

_canvasVertices = ui.Vertices.raw(ui.VertexMode.triangles, _vertexBuffer,
Expand Down Expand Up @@ -435,14 +435,14 @@ class FlutterActorImage extends ActorImage with FlutterActorDrawable {
canvas.save();

clip(canvas);
_paint.color =
_paint.color.withOpacity(renderOpacity.clamp(0.0, 1.0).toDouble());
_paint?.color =
_paint!.color.withOpacity(renderOpacity.clamp(0.0, 1.0).toDouble());

if (imageTransform != null) {
canvas.transform(imageTransform!.mat4);
canvas.drawVertices(_canvasVertices!, ui.BlendMode.srcOver, _paint);
canvas.drawVertices(_canvasVertices!, ui.BlendMode.srcOver, _paint!);
} else {
canvas.drawVertices(_canvasVertices!, ui.BlendMode.srcOver, _paint);
canvas.drawVertices(_canvasVertices!, ui.BlendMode.srcOver, _paint!);
}

canvas.restore();
Expand Down Expand Up @@ -496,17 +496,17 @@ class FlutterActorImage extends ActorImage with FlutterActorDrawable {

@override
void onAntialiasChanged(bool useAA) {
_paint.isAntiAlias = useAA;
_paint?.isAntiAlias = useAA;
onPaintUpdated(_paint);
}

@override
void onBlendModeChanged(ui.BlendMode mode) {
_paint.blendMode = mode;
_paint?.blendMode = mode;
onPaintUpdated(_paint);
}

void onPaintUpdated(ui.Paint paint) {}
void onPaintUpdated(ui.Paint? paint) {}

@override
void update(int dirt) {
Expand Down
6 changes: 3 additions & 3 deletions flare_flutter/lib/flare_render_box.dart
Original file line number Diff line number Diff line change
Expand Up @@ -164,10 +164,10 @@ abstract class FlareRenderBox extends RenderBox {
if (isPlaying) {
// Paint again
if (_frameCallbackID != -1) {
SchedulerBinding.instance?.cancelFrameCallbackWithId(_frameCallbackID);
SchedulerBinding.instance.cancelFrameCallbackWithId(_frameCallbackID);
}
_frameCallbackID =
SchedulerBinding.instance?.scheduleFrameCallback(_beginFrame) ?? -1;
SchedulerBinding.instance.scheduleFrameCallback(_beginFrame);
}

final Canvas canvas = context.canvas;
Expand Down Expand Up @@ -269,7 +269,7 @@ abstract class FlareRenderBox extends RenderBox {
} else {
_lastFrameTime = _notPlayingFlag;
if (_frameCallbackID != -1) {
SchedulerBinding.instance?.cancelFrameCallbackWithId(_frameCallbackID);
SchedulerBinding.instance.cancelFrameCallbackWithId(_frameCallbackID);
}
}
}
Expand Down