mirror of
https://github.com/rive-app/rive-flutter.git
synced 2025-06-25 17:11:55 +08:00
@ -1,8 +1,11 @@
|
||||
## [0.7.17] - 2021-06-11 18:00:00
|
||||
- Exposes antialiasing option in Rive and RiveAnimation widgets.
|
||||
|
||||
## [0.7.16] - 2021-06-11 12:00:00
|
||||
- Fixes broken build issue in 0.7.15
|
||||
|
||||
## [0.7.15] - 2021-06-10 12:00:00
|
||||
- Adds linear animation and state machine getters to RuntimeArtboard
|
||||
- Adds linear animation and state machine getters to RuntimeArtboard.
|
||||
- RiveAnimation now takes lists of animation and state machine names and plays all of them.
|
||||
- NOTE: this build is broken
|
||||
|
||||
|
@ -154,6 +154,6 @@ _controller.isActiveChanged.addListener(() {
|
||||
}
|
||||
```
|
||||
|
||||
## More Info
|
||||
## Antialiasing
|
||||
|
||||
For an in-depth tutorial on how to use the runtime, check out [this blog post](https://blog.rive.app/rives-flutter-runtime-part-1/).
|
||||
If you want to disable antialiasing (usually for performance reasons), you can set `antialiasing` to `false` on the `Rive` and `RiveAnimation` widgets.
|
||||
|
@ -11,7 +11,6 @@ class SimpleAnimation extends StatelessWidget {
|
||||
title: const Text('Simple Animation'),
|
||||
),
|
||||
body: const Center(
|
||||
// child: RiveAnimation.asset('assets/off_road_car.riv'),
|
||||
child: RiveAnimation.network(
|
||||
'https://cdn.rive.app/animations/vehicles.riv',
|
||||
fit: BoxFit.cover,
|
||||
|
@ -6,6 +6,7 @@ import 'package:rive/src/rive_render_box.dart';
|
||||
import 'package:rive/src/runtime_artboard.dart';
|
||||
|
||||
class Rive extends LeafRenderObjectWidget {
|
||||
/// Artboard used for drawing
|
||||
final Artboard artboard;
|
||||
|
||||
/// Determines whether to use the inherent size of the [artboard], i.e. the
|
||||
@ -27,12 +28,19 @@ class Rive extends LeafRenderObjectWidget {
|
||||
/// this to `true`.
|
||||
final bool useArtboardSize;
|
||||
|
||||
/// Fit for the rendering artboard
|
||||
final BoxFit fit;
|
||||
|
||||
/// Alignment for the rendering artboard
|
||||
final Alignment alignment;
|
||||
|
||||
/// Enables/disables anitalising
|
||||
final bool antialiasing;
|
||||
|
||||
const Rive({
|
||||
required this.artboard,
|
||||
this.useArtboardSize = false,
|
||||
this.antialiasing = true,
|
||||
BoxFit? fit,
|
||||
Alignment? alignment,
|
||||
}) : fit = fit ?? BoxFit.contain,
|
||||
@ -40,6 +48,8 @@ class Rive extends LeafRenderObjectWidget {
|
||||
|
||||
@override
|
||||
RenderObject createRenderObject(BuildContext context) {
|
||||
// Doing this here and not in constructor so it can remain const
|
||||
artboard.antialiasing = antialiasing;
|
||||
return RiveRenderObject(artboard as RuntimeArtboard)
|
||||
..fit = fit
|
||||
..alignment = alignment
|
||||
@ -50,6 +60,7 @@ class Rive extends LeafRenderObjectWidget {
|
||||
@override
|
||||
void updateRenderObject(
|
||||
BuildContext context, covariant RiveRenderObject renderObject) {
|
||||
artboard.antialiasing = antialiasing;
|
||||
renderObject
|
||||
..artboard = artboard
|
||||
..fit = fit
|
||||
|
@ -4,7 +4,7 @@ import 'package:flutter/services.dart';
|
||||
import 'package:flutter/widgets.dart';
|
||||
import 'package:rive/rive.dart';
|
||||
import 'package:rive/src/rive_core/artboard.dart';
|
||||
import 'package:universal_io/io.dart';
|
||||
import 'package:http/http.dart' as http;
|
||||
|
||||
enum _Source {
|
||||
asset,
|
||||
@ -15,14 +15,31 @@ enum _Source {
|
||||
/// animation are not specified, the default artboard and first animation fonund
|
||||
/// within it are used.
|
||||
class RiveAnimation extends StatefulWidget {
|
||||
/// The asset name or url
|
||||
final String name;
|
||||
|
||||
/// The type of source used to retrieve the asset
|
||||
final _Source src;
|
||||
|
||||
/// The name of the artboard to use; default artboard if not specified
|
||||
final String? artboard;
|
||||
|
||||
/// List of animations to play; default animation if not specified
|
||||
final List<String> animations;
|
||||
|
||||
/// List of state machines to play; none will play if not specified
|
||||
final List<String> stateMachines;
|
||||
|
||||
/// Fit for the animation in the widget
|
||||
final BoxFit? fit;
|
||||
|
||||
/// Alignment for the animation in the widget
|
||||
final Alignment? alignment;
|
||||
/// Widget displayed while the rive is loading.
|
||||
|
||||
/// Enable/disable antialiasing when rendering
|
||||
final bool antialiasing;
|
||||
|
||||
/// Widget displayed while the rive is loading
|
||||
final Widget? placeHolder;
|
||||
|
||||
/// Creates a new RiveAnimation from an asset bundle
|
||||
@ -34,6 +51,7 @@ class RiveAnimation extends StatefulWidget {
|
||||
this.fit,
|
||||
this.alignment,
|
||||
this.placeHolder,
|
||||
this.antialiasing = true,
|
||||
}) : src = _Source.asset;
|
||||
|
||||
const RiveAnimation.network(
|
||||
@ -44,6 +62,7 @@ class RiveAnimation extends StatefulWidget {
|
||||
this.fit,
|
||||
this.alignment,
|
||||
this.placeHolder,
|
||||
this.antialiasing = true,
|
||||
}) : src = _Source.network;
|
||||
|
||||
@override
|
||||
@ -83,24 +102,10 @@ class _RiveAnimationState extends State<RiveAnimation> {
|
||||
|
||||
/// Loads a Rive file from an HTTP source and configures artboard, animation,
|
||||
/// and controller.
|
||||
void _loadNetwork() {
|
||||
final client = HttpClient();
|
||||
final contents = <int>[];
|
||||
|
||||
client
|
||||
.getUrl(Uri.parse(widget.name))
|
||||
.then(
|
||||
(req) async => req.close(),
|
||||
)
|
||||
.then(
|
||||
(res) => res.listen(
|
||||
contents.addAll,
|
||||
onDone: () {
|
||||
final data = ByteData.view(Uint8List.fromList(contents).buffer);
|
||||
_init(data);
|
||||
},
|
||||
),
|
||||
);
|
||||
Future<void> _loadNetwork() async {
|
||||
final res = await http.get(Uri.parse(widget.name));
|
||||
final data = ByteData.view(res.bodyBytes.buffer);
|
||||
_init(data);
|
||||
}
|
||||
|
||||
/// Initializes the artboard, animation, and controller
|
||||
@ -153,6 +158,7 @@ class _RiveAnimationState extends State<RiveAnimation> {
|
||||
artboard: _artboard!,
|
||||
fit: widget.fit,
|
||||
alignment: widget.alignment,
|
||||
antialiasing: widget.antialiasing,
|
||||
)
|
||||
: widget.placeHolder ?? const SizedBox();
|
||||
}
|
||||
|
@ -1,6 +1,6 @@
|
||||
name: rive
|
||||
description: Rive 2 Flutter Runtime. This package provides runtime functionality for playing back and interacting with animations built with the Rive editor available at https://rive.app.
|
||||
version: 0.7.16
|
||||
version: 0.7.17
|
||||
repository: https://github.com/rive-app/rive-flutter
|
||||
homepage: https://rive.app
|
||||
|
||||
@ -12,8 +12,8 @@ dependencies:
|
||||
flutter:
|
||||
sdk: flutter
|
||||
graphs: ^2.0.0
|
||||
http: ^0.13.3
|
||||
meta: ^1.3.0
|
||||
universal_io: ^2.0.4
|
||||
|
||||
dev_dependencies:
|
||||
flutter_test:
|
||||
|
Reference in New Issue
Block a user