├── .gitattributes ├── .github ├── ISSUE_TEMPLATE │ └── i-have-a-problem-with-rive-flutter.md └── workflows │ ├── add_to_project.yml │ └── tests.yaml ├── .gitignore ├── .lua-format ├── .metadata ├── .rive_head ├── .vscode └── launch.json ├── CHANGELOG.md ├── LICENSE ├── README.md ├── VERSION ├── analysis_options.yaml ├── example ├── .gitignore ├── .metadata ├── README.md ├── analysis_options.yaml ├── android │ ├── .gitignore │ ├── app │ │ ├── build.gradle │ │ └── src │ │ │ ├── debug │ │ │ └── AndroidManifest.xml │ │ │ ├── main │ │ │ ├── AndroidManifest.xml │ │ │ ├── kotlin │ │ │ │ ├── app │ │ │ │ │ └── rive │ │ │ │ │ │ └── rive_example │ │ │ │ │ │ └── MainActivity.kt │ │ │ │ └── com │ │ │ │ │ └── example │ │ │ │ │ └── rive_example │ │ │ │ │ └── MainActivity.kt │ │ │ └── res │ │ │ │ ├── drawable-v21 │ │ │ │ └── launch_background.xml │ │ │ │ ├── drawable │ │ │ │ └── launch_background.xml │ │ │ │ ├── mipmap-hdpi │ │ │ │ └── ic_launcher.png │ │ │ │ ├── mipmap-mdpi │ │ │ │ └── ic_launcher.png │ │ │ │ ├── mipmap-xhdpi │ │ │ │ └── ic_launcher.png │ │ │ │ ├── mipmap-xxhdpi │ │ │ │ └── ic_launcher.png │ │ │ │ ├── mipmap-xxxhdpi │ │ │ │ └── ic_launcher.png │ │ │ │ ├── values-night │ │ │ │ └── styles.xml │ │ │ │ └── values │ │ │ │ └── styles.xml │ │ │ └── profile │ │ │ └── AndroidManifest.xml │ ├── build.gradle │ ├── gradle.properties │ ├── gradle │ │ └── wrapper │ │ │ └── gradle-wrapper.properties │ └── settings.gradle ├── assets │ ├── acqua_text_out_of_band.riv │ ├── audio │ │ ├── racket1-59343.wav │ │ ├── racket2-59344.wav │ │ └── table-59328.wav │ ├── coyote.riv │ ├── embedded_text.riv │ ├── fonts │ │ └── Inter-Regular.ttf │ ├── hit_test_consume.riv │ ├── image_out_of_band.riv │ ├── light_switch.riv │ ├── lip-sync.riv │ ├── liquid_download.riv │ ├── little_machine.riv │ ├── off_road_car.riv │ ├── ping_pong_audio_demo.riv │ ├── rating_animation.riv │ ├── rocket.riv │ ├── runtime_nested_inputs.riv │ ├── skills.riv │ ├── skins_demo.riv │ ├── solo_test.riv │ ├── teeny_tiny.riv │ ├── text_flutter.riv │ ├── trans_text.riv │ ├── url_event_button.riv │ └── vehicles.riv ├── ios │ ├── .gitignore │ ├── Flutter │ │ ├── AppFrameworkInfo.plist │ │ ├── Debug.xcconfig │ │ └── Release.xcconfig │ ├── Podfile │ ├── Runner.xcodeproj │ │ ├── project.pbxproj │ │ ├── project.xcworkspace │ │ │ ├── contents.xcworkspacedata │ │ │ └── xcshareddata │ │ │ │ ├── IDEWorkspaceChecks.plist │ │ │ │ └── WorkspaceSettings.xcsettings │ │ └── xcshareddata │ │ │ └── xcschemes │ │ │ └── Runner.xcscheme │ ├── Runner.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata │ │ │ ├── IDEWorkspaceChecks.plist │ │ │ └── WorkspaceSettings.xcsettings │ └── Runner │ │ ├── AppDelegate.swift │ │ ├── Assets.xcassets │ │ ├── AppIcon.appiconset │ │ │ ├── Contents.json │ │ │ ├── Icon-App-1024x1024@1x.png │ │ │ ├── Icon-App-20x20@1x.png │ │ │ ├── Icon-App-20x20@2x.png │ │ │ ├── Icon-App-20x20@3x.png │ │ │ ├── Icon-App-29x29@1x.png │ │ │ ├── Icon-App-29x29@2x.png │ │ │ ├── Icon-App-29x29@3x.png │ │ │ ├── Icon-App-40x40@1x.png │ │ │ ├── Icon-App-40x40@2x.png │ │ │ ├── Icon-App-40x40@3x.png │ │ │ ├── Icon-App-60x60@2x.png │ │ │ ├── Icon-App-60x60@3x.png │ │ │ ├── Icon-App-76x76@1x.png │ │ │ ├── Icon-App-76x76@2x.png │ │ │ └── Icon-App-83.5x83.5@2x.png │ │ └── LaunchImage.imageset │ │ │ ├── Contents.json │ │ │ ├── LaunchImage.png │ │ │ ├── LaunchImage@2x.png │ │ │ ├── LaunchImage@3x.png │ │ │ └── README.md │ │ ├── Base.lproj │ │ ├── LaunchScreen.storyboard │ │ └── Main.storyboard │ │ ├── Info.plist │ │ └── Runner-Bridging-Header.h ├── lib │ ├── artboard_nested_inputs.dart │ ├── basic_text.dart │ ├── carousel.dart │ ├── custom_asset_loading.dart │ ├── custom_cached_asset_loading.dart │ ├── custom_controller.dart │ ├── event_open_url_button.dart │ ├── event_star_rating.dart │ ├── example_state_machine.dart │ ├── liquid_download.dart │ ├── little_machine.dart │ ├── main.dart │ ├── play_one_shot_animation.dart │ ├── play_pause_animation.dart │ ├── rive_audio.dart │ ├── rive_audio_out_of_band.dart │ ├── simple_animation.dart │ ├── simple_animation_network.dart │ ├── simple_machine_listener.dart │ ├── simple_state_machine.dart │ ├── skinning_demo.dart │ └── state_machine_skills.dart ├── macos │ ├── .gitignore │ ├── Flutter │ │ ├── Flutter-Debug.xcconfig │ │ └── Flutter-Release.xcconfig │ ├── Podfile │ ├── Runner.xcodeproj │ │ ├── project.pbxproj │ │ ├── project.xcworkspace │ │ │ └── xcshareddata │ │ │ │ └── IDEWorkspaceChecks.plist │ │ └── xcshareddata │ │ │ └── xcschemes │ │ │ └── Runner.xcscheme │ ├── Runner.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata │ │ │ └── IDEWorkspaceChecks.plist │ └── Runner │ │ ├── AppDelegate.swift │ │ ├── Assets.xcassets │ │ └── AppIcon.appiconset │ │ │ ├── Contents.json │ │ │ ├── app_icon_1024.png │ │ │ ├── app_icon_128.png │ │ │ ├── app_icon_16.png │ │ │ ├── app_icon_256.png │ │ │ ├── app_icon_32.png │ │ │ ├── app_icon_512.png │ │ │ └── app_icon_64.png │ │ ├── Base.lproj │ │ └── MainMenu.xib │ │ ├── Configs │ │ ├── AppInfo.xcconfig │ │ ├── Debug.xcconfig │ │ ├── Release.xcconfig │ │ └── Warnings.xcconfig │ │ ├── DebugProfile.entitlements │ │ ├── Info.plist │ │ ├── MainFlutterWindow.swift │ │ └── Release.entitlements ├── pubspec.yaml ├── web │ ├── favicon.png │ ├── icons │ │ ├── Icon-192.png │ │ ├── Icon-512.png │ │ ├── Icon-maskable-192.png │ │ └── Icon-maskable-512.png │ ├── index.html │ └── manifest.json └── windows │ ├── .gitignore │ ├── CMakeLists.txt │ ├── flutter │ └── CMakeLists.txt │ └── runner │ ├── CMakeLists.txt │ ├── Runner.rc │ ├── flutter_window.cpp │ ├── flutter_window.h │ ├── main.cpp │ ├── resource.h │ ├── resources │ └── app_icon.ico │ ├── runner.exe.manifest │ ├── utils.cpp │ ├── utils.h │ ├── win32_window.cpp │ └── win32_window.h ├── lib ├── components.dart ├── math.dart ├── rive.dart ├── rive_web.dart └── src │ ├── animation_list.dart │ ├── asset.dart │ ├── asset_list.dart │ ├── asset_loader.dart │ ├── blend_animations.dart │ ├── container_children.dart │ ├── controllers │ ├── linear_animation_controller.dart │ ├── one_shot_controller.dart │ ├── simple_controller.dart │ └── state_machine_controller.dart │ ├── core │ ├── core.dart │ ├── field_types │ │ ├── core_bool_type.dart │ │ ├── core_bytes_type.dart │ │ ├── core_callback_type.dart │ │ ├── core_color_type.dart │ │ ├── core_double_type.dart │ │ ├── core_field_type.dart │ │ ├── core_int_type.dart │ │ ├── core_string_type.dart │ │ └── core_uint_type.dart │ └── importers │ │ ├── artboard_import_stack_object.dart │ │ ├── artboard_importer.dart │ │ ├── backboard_importer.dart │ │ ├── file_asset_importer.dart │ │ ├── keyed_object_importer.dart │ │ ├── keyed_property_importer.dart │ │ ├── layer_state_importer.dart │ │ ├── linear_animation_importer.dart │ │ ├── nested_state_machine_importer.dart │ │ ├── state_machine_importer.dart │ │ ├── state_machine_layer_component_importer.dart │ │ ├── state_machine_layer_importer.dart │ │ ├── state_machine_listener_importer.dart │ │ ├── state_transition_importer.dart │ │ └── viewmodel_instance_importer.dart │ ├── data_enum_values.dart │ ├── debug.dart │ ├── dynamic_library_helper │ ├── dynamic_library_helper_ffi.dart │ ├── dynamic_library_helper_stub.dart │ └── dynamic_library_helper_web.dart │ ├── event_list.dart │ ├── extensions.dart │ ├── generated │ ├── animation │ │ ├── advanceable_state_base.dart │ │ ├── animation_base.dart │ │ ├── animation_state_base.dart │ │ ├── any_state_base.dart │ │ ├── blend_animation_1d_base.dart │ │ ├── blend_animation_base.dart │ │ ├── blend_animation_direct_base.dart │ │ ├── blend_state_1d_base.dart │ │ ├── blend_state_base.dart │ │ ├── blend_state_direct_base.dart │ │ ├── blend_state_transition_base.dart │ │ ├── cubic_ease_interpolator_base.dart │ │ ├── cubic_interpolator_base.dart │ │ ├── cubic_interpolator_component_base.dart │ │ ├── cubic_value_interpolator_base.dart │ │ ├── elastic_interpolator_base.dart │ │ ├── entry_state_base.dart │ │ ├── exit_state_base.dart │ │ ├── interpolating_keyframe_base.dart │ │ ├── keyed_object_base.dart │ │ ├── keyed_property_base.dart │ │ ├── keyframe_base.dart │ │ ├── keyframe_bool_base.dart │ │ ├── keyframe_callback_base.dart │ │ ├── keyframe_color_base.dart │ │ ├── keyframe_double_base.dart │ │ ├── keyframe_id_base.dart │ │ ├── keyframe_interpolator_base.dart │ │ ├── keyframe_string_base.dart │ │ ├── keyframe_uint_base.dart │ │ ├── layer_state_base.dart │ │ ├── linear_animation_base.dart │ │ ├── listener_action_base.dart │ │ ├── listener_align_target_base.dart │ │ ├── listener_bool_change_base.dart │ │ ├── listener_fire_event_base.dart │ │ ├── listener_input_change_base.dart │ │ ├── listener_number_change_base.dart │ │ ├── listener_trigger_change_base.dart │ │ ├── listener_viewmodel_change_base.dart │ │ ├── nested_bool_base.dart │ │ ├── nested_input_base.dart │ │ ├── nested_linear_animation_base.dart │ │ ├── nested_number_base.dart │ │ ├── nested_remap_animation_base.dart │ │ ├── nested_simple_animation_base.dart │ │ ├── nested_state_machine_base.dart │ │ ├── nested_trigger_base.dart │ │ ├── state_machine_base.dart │ │ ├── state_machine_bool_base.dart │ │ ├── state_machine_component_base.dart │ │ ├── state_machine_double_base.dart │ │ ├── state_machine_event_base.dart │ │ ├── state_machine_fire_event_base.dart │ │ ├── state_machine_input_base.dart │ │ ├── state_machine_layer_base.dart │ │ ├── state_machine_layer_component_base.dart │ │ ├── state_machine_listener_base.dart │ │ ├── state_machine_number_base.dart │ │ ├── state_machine_trigger_base.dart │ │ ├── state_transition_base.dart │ │ ├── transition_artboard_condition_base.dart │ │ ├── transition_bool_condition_base.dart │ │ ├── transition_comparator_base.dart │ │ ├── transition_condition_base.dart │ │ ├── transition_double_condition_base.dart │ │ ├── transition_input_condition_base.dart │ │ ├── transition_number_condition_base.dart │ │ ├── transition_property_artboard_comparator_base.dart │ │ ├── transition_property_comparator_base.dart │ │ ├── transition_property_viewmodel_comparator_base.dart │ │ ├── transition_trigger_condition_base.dart │ │ ├── transition_value_boolean_comparator_base.dart │ │ ├── transition_value_color_comparator_base.dart │ │ ├── transition_value_comparator_base.dart │ │ ├── transition_value_condition_base.dart │ │ ├── transition_value_enum_comparator_base.dart │ │ ├── transition_value_number_comparator_base.dart │ │ ├── transition_value_string_comparator_base.dart │ │ └── transition_viewmodel_condition_base.dart │ ├── artboard_base.dart │ ├── asset_base.dart │ ├── assets │ │ ├── asset_base.dart │ │ ├── audio_asset_base.dart │ │ ├── drawable_asset_base.dart │ │ ├── export_audio_base.dart │ │ ├── file_asset_base.dart │ │ ├── file_asset_contents_base.dart │ │ ├── folder_base.dart │ │ ├── font_asset_base.dart │ │ └── image_asset_base.dart │ ├── audio_event_base.dart │ ├── backboard_base.dart │ ├── bones │ │ ├── bone_base.dart │ │ ├── cubic_weight_base.dart │ │ ├── root_bone_base.dart │ │ ├── skeletal_component_base.dart │ │ ├── skin_base.dart │ │ ├── tendon_base.dart │ │ └── weight_base.dart │ ├── component_base.dart │ ├── constraints │ │ ├── constraint_base.dart │ │ ├── distance_constraint_base.dart │ │ ├── follow_path_constraint_base.dart │ │ ├── ik_constraint_base.dart │ │ ├── rotation_constraint_base.dart │ │ ├── scale_constraint_base.dart │ │ ├── targeted_constraint_base.dart │ │ ├── transform_component_constraint_base.dart │ │ ├── transform_component_constraint_y_base.dart │ │ ├── transform_constraint_base.dart │ │ ├── transform_space_constraint_base.dart │ │ └── translation_constraint_base.dart │ ├── container_component_base.dart │ ├── custom_property_base.dart │ ├── custom_property_boolean_base.dart │ ├── custom_property_number_base.dart │ ├── custom_property_string_base.dart │ ├── data_bind │ │ ├── bindable_property_base.dart │ │ ├── bindable_property_boolean_base.dart │ │ ├── bindable_property_color_base.dart │ │ ├── bindable_property_enum_base.dart │ │ ├── bindable_property_number_base.dart │ │ ├── bindable_property_string_base.dart │ │ ├── converters │ │ │ └── data_converter_base.dart │ │ ├── data_bind_base.dart │ │ └── data_bind_context_base.dart │ ├── draw_rules_base.dart │ ├── draw_target_base.dart │ ├── drawable_base.dart │ ├── event_base.dart │ ├── joystick_base.dart │ ├── layout │ │ ├── grid_track_sizing_group_base.dart │ │ ├── layout_component_style_base.dart │ │ └── track_sizing_function_base.dart │ ├── layout_component_absolute_base.dart │ ├── layout_component_base.dart │ ├── nested_animation_base.dart │ ├── nested_artboard_base.dart │ ├── node_base.dart │ ├── open_url_event_base.dart │ ├── rive_core_context.dart │ ├── shapes │ │ ├── clipping_shape_base.dart │ │ ├── contour_mesh_vertex_base.dart │ │ ├── cubic_asymmetric_vertex_base.dart │ │ ├── cubic_detached_vertex_base.dart │ │ ├── cubic_mirrored_vertex_base.dart │ │ ├── cubic_vertex_base.dart │ │ ├── ellipse_base.dart │ │ ├── forced_edge_base.dart │ │ ├── image_base.dart │ │ ├── mesh_base.dart │ │ ├── mesh_vertex_base.dart │ │ ├── paint │ │ │ ├── fill_base.dart │ │ │ ├── gradient_stop_base.dart │ │ │ ├── linear_gradient_base.dart │ │ │ ├── radial_gradient_base.dart │ │ │ ├── shape_paint_base.dart │ │ │ ├── solid_color_base.dart │ │ │ ├── stroke_base.dart │ │ │ └── trim_path_base.dart │ │ ├── parametric_path_base.dart │ │ ├── path_base.dart │ │ ├── path_composer_base.dart │ │ ├── path_vertex_base.dart │ │ ├── points_path_base.dart │ │ ├── polygon_base.dart │ │ ├── rectangle_base.dart │ │ ├── shape_base.dart │ │ ├── star_base.dart │ │ ├── straight_vertex_base.dart │ │ ├── triangle_base.dart │ │ └── vertex_base.dart │ ├── solo_base.dart │ ├── text │ │ ├── text_base.dart │ │ ├── text_modifier_base.dart │ │ ├── text_modifier_group_base.dart │ │ ├── text_modifier_range_base.dart │ │ ├── text_shape_modifier_base.dart │ │ ├── text_style_axis_base.dart │ │ ├── text_style_base.dart │ │ ├── text_style_feature_base.dart │ │ ├── text_value_run_base.dart │ │ └── text_variation_modifier_base.dart │ ├── transform_component_base.dart │ ├── viewmodel │ │ ├── data_enum_base.dart │ │ ├── data_enum_value_base.dart │ │ ├── viewmodel_base.dart │ │ ├── viewmodel_component_base.dart │ │ ├── viewmodel_instance_base.dart │ │ ├── viewmodel_instance_boolean_base.dart │ │ ├── viewmodel_instance_color_base.dart │ │ ├── viewmodel_instance_enum_base.dart │ │ ├── viewmodel_instance_list_base.dart │ │ ├── viewmodel_instance_list_item_base.dart │ │ ├── viewmodel_instance_number_base.dart │ │ ├── viewmodel_instance_string_base.dart │ │ ├── viewmodel_instance_value_base.dart │ │ ├── viewmodel_instance_viewmodel_base.dart │ │ ├── viewmodel_property_base.dart │ │ ├── viewmodel_property_boolean_base.dart │ │ ├── viewmodel_property_color_base.dart │ │ ├── viewmodel_property_enum_base.dart │ │ ├── viewmodel_property_list_base.dart │ │ ├── viewmodel_property_number_base.dart │ │ ├── viewmodel_property_string_base.dart │ │ └── viewmodel_property_viewmodel_base.dart │ └── world_transform_component_base.dart │ ├── layer_component_events.dart │ ├── listener_actions.dart │ ├── local_file_io.dart │ ├── local_file_web.dart │ ├── platform.dart │ ├── platform_native.dart │ ├── platform_web.dart │ ├── rive.dart │ ├── rive_core │ ├── animation │ │ ├── advanceable_state.dart │ │ ├── animation.dart │ │ ├── animation_reset_factory.dart │ │ ├── animation_state.dart │ │ ├── animation_state_instance.dart │ │ ├── any_state.dart │ │ ├── blend_animation.dart │ │ ├── blend_animation_1d.dart │ │ ├── blend_animation_direct.dart │ │ ├── blend_state.dart │ │ ├── blend_state_1d.dart │ │ ├── blend_state_1d_instance.dart │ │ ├── blend_state_direct.dart │ │ ├── blend_state_direct_instance.dart │ │ ├── blend_state_instance.dart │ │ ├── blend_state_transition.dart │ │ ├── cubic_ease_interpolator.dart │ │ ├── cubic_interpolator.dart │ │ ├── cubic_interpolator_component.dart │ │ ├── cubic_value_interpolator.dart │ │ ├── elastic_interpolator.dart │ │ ├── entry_state.dart │ │ ├── exit_state.dart │ │ ├── interpolating_keyframe.dart │ │ ├── interpolator.dart │ │ ├── keyed_object.dart │ │ ├── keyed_property.dart │ │ ├── keyframe.dart │ │ ├── keyframe_bool.dart │ │ ├── keyframe_callback.dart │ │ ├── keyframe_color.dart │ │ ├── keyframe_double.dart │ │ ├── keyframe_id.dart │ │ ├── keyframe_interpolation.dart │ │ ├── keyframe_interpolator.dart │ │ ├── keyframe_string.dart │ │ ├── keyframe_uint.dart │ │ ├── layer_state.dart │ │ ├── linear_animation.dart │ │ ├── linear_animation_instance.dart │ │ ├── listener_action.dart │ │ ├── listener_align_target.dart │ │ ├── listener_bool_change.dart │ │ ├── listener_fire_event.dart │ │ ├── listener_input_change.dart │ │ ├── listener_number_change.dart │ │ ├── listener_trigger_change.dart │ │ ├── listener_viewmodel_change.dart │ │ ├── loop.dart │ │ ├── nested_bool.dart │ │ ├── nested_input.dart │ │ ├── nested_linear_animation.dart │ │ ├── nested_number.dart │ │ ├── nested_remap_animation.dart │ │ ├── nested_simple_animation.dart │ │ ├── nested_state_machine.dart │ │ ├── nested_trigger.dart │ │ ├── state_instance.dart │ │ ├── state_machine.dart │ │ ├── state_machine_bool.dart │ │ ├── state_machine_component.dart │ │ ├── state_machine_fire_event.dart │ │ ├── state_machine_input.dart │ │ ├── state_machine_layer.dart │ │ ├── state_machine_layer_component.dart │ │ ├── state_machine_listener.dart │ │ ├── state_machine_number.dart │ │ ├── state_machine_trigger.dart │ │ ├── state_transition.dart │ │ ├── transition_artboard_condition.dart │ │ ├── transition_bool_condition.dart │ │ ├── transition_comparator.dart │ │ ├── transition_condition.dart │ │ ├── transition_input_condition.dart │ │ ├── transition_number_condition.dart │ │ ├── transition_property_comparator.dart │ │ ├── transition_property_viewmodel_comparator.dart │ │ ├── transition_trigger_condition.dart │ │ ├── transition_value_boolean_comparator.dart │ │ ├── transition_value_color_comparator.dart │ │ ├── transition_value_comparator.dart │ │ ├── transition_value_condition.dart │ │ ├── transition_value_enum_comparator.dart │ │ ├── transition_value_number_comparator.dart │ │ ├── transition_value_string_comparator.dart │ │ └── transition_viewmodel_condition.dart │ ├── artboard.dart │ ├── assets │ │ ├── asset.dart │ │ ├── audio_asset.dart │ │ ├── drawable_asset.dart │ │ ├── export_audio.dart │ │ ├── file_asset.dart │ │ ├── file_asset_contents.dart │ │ ├── folder.dart │ │ ├── font_asset.dart │ │ └── image_asset.dart │ ├── audio_event.dart │ ├── audio_player.dart │ ├── backboard.dart │ ├── bones │ │ ├── bone.dart │ │ ├── cubic_weight.dart │ │ ├── root_bone.dart │ │ ├── skeletal_component.dart │ │ ├── skin.dart │ │ ├── skinnable.dart │ │ ├── tendon.dart │ │ ├── weight.dart │ │ └── weighted_vertex.dart │ ├── bounds_provider.dart │ ├── component.dart │ ├── component_dirt.dart │ ├── component_flags.dart │ ├── constraints │ │ ├── constraint.dart │ │ ├── distance_constraint.dart │ │ ├── follow_path_constraint.dart │ │ ├── ik_constraint.dart │ │ ├── rotation_constraint.dart │ │ ├── scale_constraint.dart │ │ ├── targeted_constraint.dart │ │ ├── transform_component_constraint.dart │ │ ├── transform_component_constraint_y.dart │ │ ├── transform_constraint.dart │ │ ├── transform_space_constraint.dart │ │ └── translation_constraint.dart │ ├── container_component.dart │ ├── custom_property.dart │ ├── custom_property_boolean.dart │ ├── custom_property_number.dart │ ├── custom_property_string.dart │ ├── data_bind │ │ ├── bindable_property.dart │ │ ├── bindable_property_boolean.dart │ │ ├── bindable_property_color.dart │ │ ├── bindable_property_enum.dart │ │ ├── bindable_property_number.dart │ │ ├── bindable_property_string.dart │ │ ├── context │ │ │ ├── context_value.dart │ │ │ ├── context_value_boolean.dart │ │ │ ├── context_value_color.dart │ │ │ ├── context_value_enum.dart │ │ │ ├── context_value_list.dart │ │ │ ├── context_value_number.dart │ │ │ └── context_value_string.dart │ │ ├── data_bind.dart │ │ ├── data_bind_context.dart │ │ └── data_context.dart │ ├── data_bind_flags.dart │ ├── dependency_helper.dart │ ├── draw_rules.dart │ ├── draw_target.dart │ ├── drawable.dart │ ├── enum_helper.dart │ ├── event.dart │ ├── joystick.dart │ ├── layer_state_flags.dart │ ├── layout │ │ └── layout_component_style.dart │ ├── layout_component.dart │ ├── nested_animation.dart │ ├── nested_artboard.dart │ ├── node.dart │ ├── notifier.dart │ ├── open_url_event.dart │ ├── open_url_target.dart │ ├── rive_animation_controller.dart │ ├── rive_core_singleton_test.dart │ ├── runtime │ │ ├── exceptions │ │ │ ├── rive_format_error_exception.dart │ │ │ └── rive_unsupported_version_exception.dart │ │ └── runtime_header.dart │ ├── shapes │ │ ├── clipping_shape.dart │ │ ├── contour_mesh_vertex.dart │ │ ├── cubic_asymmetric_vertex.dart │ │ ├── cubic_detached_vertex.dart │ │ ├── cubic_mirrored_vertex.dart │ │ ├── cubic_vertex.dart │ │ ├── ellipse.dart │ │ ├── image.dart │ │ ├── mesh.dart │ │ ├── mesh_vertex.dart │ │ ├── paint │ │ │ ├── fill.dart │ │ │ ├── gradient_stop.dart │ │ │ ├── linear_gradient.dart │ │ │ ├── radial_gradient.dart │ │ │ ├── shape_paint.dart │ │ │ ├── shape_paint_mutator.dart │ │ │ ├── solid_color.dart │ │ │ ├── stroke.dart │ │ │ ├── stroke_effect.dart │ │ │ ├── trim_path.dart │ │ │ └── trim_path_drawing.dart │ │ ├── parametric_path.dart │ │ ├── path.dart │ │ ├── path_composer.dart │ │ ├── path_vertex.dart │ │ ├── points_path.dart │ │ ├── polygon.dart │ │ ├── rectangle.dart │ │ ├── shape.dart │ │ ├── shape_paint_container.dart │ │ ├── star.dart │ │ ├── straight_vertex.dart │ │ ├── triangle.dart │ │ └── vertex.dart │ ├── solo.dart │ ├── state_machine_controller.dart │ ├── state_transition_flags.dart │ ├── text │ │ ├── styled_text.dart │ │ ├── text.dart │ │ ├── text_modifier.dart │ │ ├── text_modifier_group.dart │ │ ├── text_modifier_range.dart │ │ ├── text_shape_modifier.dart │ │ ├── text_style.dart │ │ ├── text_style_axis.dart │ │ ├── text_style_container.dart │ │ ├── text_style_feature.dart │ │ ├── text_value_run.dart │ │ └── text_variation_modifier.dart │ ├── transform_component.dart │ ├── transform_space.dart │ ├── viewmodel │ │ ├── data_enum.dart │ │ ├── data_enum_value.dart │ │ ├── viewmodel.dart │ │ ├── viewmodel_component.dart │ │ ├── viewmodel_instance.dart │ │ ├── viewmodel_instance_boolean.dart │ │ ├── viewmodel_instance_color.dart │ │ ├── viewmodel_instance_enum.dart │ │ ├── viewmodel_instance_list.dart │ │ ├── viewmodel_instance_list_item.dart │ │ ├── viewmodel_instance_number.dart │ │ ├── viewmodel_instance_string.dart │ │ ├── viewmodel_instance_value.dart │ │ ├── viewmodel_instance_viewmodel.dart │ │ ├── viewmodel_property.dart │ │ ├── viewmodel_property_boolean.dart │ │ ├── viewmodel_property_color.dart │ │ ├── viewmodel_property_enum.dart │ │ ├── viewmodel_property_list.dart │ │ ├── viewmodel_property_number.dart │ │ ├── viewmodel_property_string.dart │ │ └── viewmodel_property_viewmodel.dart │ └── world_transform_component.dart │ ├── rive_file.dart │ ├── rive_render_box.dart │ ├── rive_scene.dart │ ├── runtime_artboard.dart │ ├── runtime_event.dart │ ├── runtime_mounted_artboard.dart │ ├── runtime_nested_artboard.dart │ ├── state_machine_components.dart │ ├── state_transition_conditions.dart │ ├── state_transitions.dart │ ├── utilities │ └── utilities.dart │ ├── viewmodel_list_items.dart │ ├── viewmodel_properties.dart │ └── widgets │ └── rive_animation.dart ├── platform_considerations.md ├── premake5_rive_plugin.lua ├── pubspec.yaml ├── shared_lib └── build_shared.sh ├── test ├── artboard_test.dart ├── asset_gc_test.dart ├── asset_test.dart ├── assets │ ├── batch_rivs │ │ ├── circle-fui.riv │ │ ├── danger-quarantine.riv │ │ ├── fire-skull.riv │ │ ├── joystick-demos-fish.riv │ │ └── polito.riv │ ├── cdn_image.riv │ ├── component_discovery.riv │ ├── electrified_button_simple.riv │ ├── event_on_listener.riv │ ├── events_from_trigger_test.riv │ ├── events_on_states.riv │ ├── file.png │ ├── follow_path_path.riv │ ├── follow_path_shapes.riv │ ├── follow_path_solos.riv │ ├── hit_test_consume.riv │ ├── hit_test_pass_through.riv │ ├── image_asset_prod.riv │ ├── image_asset_uat.riv │ ├── joystick_handle_source.riv │ ├── off_road_car.riv │ ├── rive-flutter-test-asset.riv │ ├── runtime_nested_inputs.riv │ ├── sample_image.riv │ ├── skins_demo.riv │ └── spilled_time.riv ├── component_find_test.dart ├── goldens │ ├── batch_tests │ │ ├── golden_batch_test.dart │ │ └── images │ │ │ ├── circle-fui.riv-01.png │ │ │ ├── circle-fui.riv-02.png │ │ │ ├── circle-fui.riv-03.png │ │ │ ├── danger-quarantine.riv-01.png │ │ │ ├── danger-quarantine.riv-02.png │ │ │ ├── danger-quarantine.riv-03.png │ │ │ ├── fire-skull.riv-01.png │ │ │ ├── fire-skull.riv-02.png │ │ │ ├── fire-skull.riv-03.png │ │ │ ├── joystick-demos-fish.riv-01.png │ │ │ ├── joystick-demos-fish.riv-02.png │ │ │ ├── joystick-demos-fish.riv-03.png │ │ │ ├── polito.riv-01.png │ │ │ ├── polito.riv-02.png │ │ │ └── polito.riv-03.png │ ├── follow_path │ │ ├── golden_follow_path_solos_test.dart │ │ ├── golden_follow_path_test.dart │ │ └── images │ │ │ ├── follow_path_over_time_01.png │ │ │ ├── follow_path_over_time_02.png │ │ │ ├── follow_path_over_time_03.png │ │ │ ├── follow_path_over_time_04.png │ │ │ ├── follow_path_path_01.png │ │ │ ├── follow_path_path_02.png │ │ │ ├── follow_path_path_03.png │ │ │ ├── follow_path_solos_01.png │ │ │ ├── follow_path_solos_02.png │ │ │ ├── follow_path_solos_03.png │ │ │ └── follow_path_solos_04.png │ ├── golden_comparator.dart │ ├── joysticks │ │ ├── golden_joysticks_test.dart │ │ └── images │ │ │ ├── joystick_handle_source_01.png │ │ │ ├── joystick_handle_source_02.png │ │ │ ├── joystick_handle_source_03.png │ │ │ └── joystick_handle_source_04.png │ ├── simple_animations │ │ ├── golden_simple_animations_test.dart │ │ └── images │ │ │ ├── mixed_animations_01.png │ │ │ ├── mixed_animations_02.png │ │ │ ├── play_first_animation_found.png │ │ │ ├── play_provided_animation_controller_01.png │ │ │ └── play_provided_animation_controller_02.png │ ├── skins_opacity │ │ ├── golden_skins_opacity_test.dart │ │ └── images │ │ │ ├── skins_opacity_01.png │ │ │ ├── skins_opacity_02.png │ │ │ ├── skins_opacity_03.png │ │ │ ├── skins_opacity_04.png │ │ │ └── skins_opacity_05.png │ ├── spilled_time │ │ ├── images │ │ │ ├── spilled_time_00.png │ │ │ ├── spilled_time_01.png │ │ │ ├── spilled_time_02.png │ │ │ ├── spilled_time_03.png │ │ │ ├── spilled_time_04.png │ │ │ ├── spilled_time_05.png │ │ │ ├── spilled_time_exact_00.png │ │ │ ├── spilled_time_exact_01.png │ │ │ ├── spilled_time_exact_02.png │ │ │ ├── spilled_time_overshoot_00.png │ │ │ ├── spilled_time_overshoot_01.png │ │ │ └── spilled_time_overshoot_02.png │ │ └── spilled_time_test.dart │ ├── text │ │ ├── golden_text_test.dart │ │ └── images │ │ │ ├── text_bones_constraint_01.png │ │ │ ├── text_bones_constraint_02.png │ │ │ ├── text_bones_constraint_03.png │ │ │ └── text_bones_constraint_04.png │ └── ticker_mode │ │ ├── golden_ticker_mode_test.dart │ │ └── images │ │ ├── ticker_mode_false.png │ │ ├── ticker_mode_true_1.png │ │ ├── ticker_mode_true_2.png │ │ └── ticker_mode_true_paused_state.png ├── hit_test.dart ├── linear_animation_instance_test.dart ├── mocks │ ├── fakes.dart │ └── mocks.dart ├── nested_input_test.dart ├── rive_animation_test.dart ├── rive_file_test.dart ├── rive_network_test.dart ├── simple_animation_test.dart └── src │ ├── network.dart │ └── utils.dart └── update_dependencies.sh /.gitattributes: -------------------------------------------------------------------------------- 1 | test/assets/** filter=lfs diff=lfs merge=lfs -text 2 | test/goldens/**/images/*.png filter=lfs diff=lfs merge=lfs -text -------------------------------------------------------------------------------- /.github/workflows/add_to_project.yml: -------------------------------------------------------------------------------- 1 | name: Adds all new issues to project board 2 | 3 | on: 4 | issues: 5 | types: 6 | - opened 7 | 8 | jobs: 9 | add-to-project: 10 | name: Add issue to project 11 | runs-on: ubuntu-latest 12 | steps: 13 | - uses: actions/add-to-project@v0.5.0 14 | with: 15 | project-url: https://github.com/orgs/rive-app/projects/12/views/1 16 | github-token: ${{ secrets.ADD_TO_PROJECT_ACTION }} 17 | 18 | - uses: actions/github-script@v6 19 | with: 20 | script: | 21 | github.rest.issues.addLabels({ 22 | issue_number: context.issue.number, 23 | owner: context.repo.owner, 24 | repo: context.repo.repo, 25 | labels: ["triage"] 26 | }) 27 | -------------------------------------------------------------------------------- /.lua-format: -------------------------------------------------------------------------------- 1 | column_limit: 80 2 | indent_width: 4 3 | use_tab: false 4 | tab_width: 4 5 | continuation_indent_width: 4 6 | spaces_before_call: 1 7 | keep_simple_control_block_one_line: true 8 | keep_simple_function_one_line: true 9 | align_args: true 10 | break_after_functioncall_lp: false 11 | break_before_functioncall_rp: false 12 | spaces_inside_functioncall_parens: false 13 | spaces_inside_functiondef_parens: false 14 | align_parameter: true 15 | chop_down_parameter: false 16 | break_after_functiondef_lp: false 17 | break_before_functiondef_rp: false 18 | align_table_field: true 19 | break_after_table_lb: true 20 | break_before_table_rb: true 21 | chop_down_table: true 22 | chop_down_kv_table: true 23 | table_sep: "," 24 | column_table_limit: column_limit 25 | extra_sep_at_table_end: false 26 | spaces_inside_table_braces: false 27 | break_after_operator: true 28 | double_quote_to_single_quote: false 29 | single_quote_to_double_quote: false 30 | spaces_around_equals_in_field: true 31 | line_breaks_after_function_body: 1 32 | line_separator: input 33 | -------------------------------------------------------------------------------- /.rive_head: -------------------------------------------------------------------------------- 1 | f99c5665ceb9de1780e91483c082b190d49839f6 2 | -------------------------------------------------------------------------------- /.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | // Use IntelliSense to learn about possible attributes. 3 | // Hover to view descriptions of existing attributes. 4 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 5 | "version": "0.0.1", 6 | "configurations": [ 7 | { 8 | "name": "Rive Flutter example", 9 | "program": "example/lib/main.dart", 10 | "request": "launch", 11 | "type": "dart", 12 | "env": { 13 | 14 | } 15 | } 16 | ] 17 | } -------------------------------------------------------------------------------- /VERSION: -------------------------------------------------------------------------------- 1 | 0.9.1 -------------------------------------------------------------------------------- /example/.gitignore: -------------------------------------------------------------------------------- 1 | # Miscellaneous 2 | *.class 3 | *.log 4 | *.pyc 5 | *.swp 6 | .DS_Store 7 | .atom/ 8 | .buildlog/ 9 | .history 10 | .svn/ 11 | 12 | # IntelliJ related 13 | *.iml 14 | *.ipr 15 | *.iws 16 | .idea/ 17 | 18 | # The .vscode folder contains launch configuration and tasks you configure in 19 | # VS Code which you may wish to be included in version control, so this line 20 | # is commented out by default. 21 | #.vscode/ 22 | 23 | # Flutter/Dart/Pub related 24 | **/doc/api/ 25 | **/ios/Flutter/.last_build_id 26 | .dart_tool/ 27 | .flutter-plugins 28 | .flutter-plugins-dependencies 29 | .packages 30 | .pub-cache/ 31 | .pub/ 32 | /build/ 33 | 34 | # Web related 35 | lib/generated_plugin_registrant.dart 36 | 37 | # Symbolication related 38 | app.*.symbols 39 | 40 | # Obfuscation related 41 | app.*.map.json 42 | 43 | # Exceptions to above rules. 44 | !/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages 45 | -------------------------------------------------------------------------------- /example/README.md: -------------------------------------------------------------------------------- 1 | # Rive Flutter Example 2 | 3 | A demo application showcasing Rive Flutter. 4 | 5 | ## Getting Started 6 | 7 | Clone this repository: 8 | ```bash 9 | git clone https://github.com/rive-app/rive-flutter 10 | ``` 11 | 12 | Run the example: 13 | 14 | ```bash 15 | cd rive-flutter/example 16 | flutter pub get 17 | flutter run 18 | ``` 19 | 20 | ### Flutter Installation Instructions 21 | If you're new to [Flutter](https://flutter.dev), see the official [installation instructions](https://docs.flutter.dev/get-started/install). -------------------------------------------------------------------------------- /example/analysis_options.yaml: -------------------------------------------------------------------------------- 1 | include: package:flutter_lints/flutter.yaml 2 | analyzer: 3 | exclude: 4 | - windows/** 5 | - ios/** 6 | - macos/** 7 | - web/** 8 | 9 | linter: 10 | rules: 11 | -------------------------------------------------------------------------------- /example/android/.gitignore: -------------------------------------------------------------------------------- 1 | gradle-wrapper.jar 2 | /.gradle 3 | /captures/ 4 | /gradlew 5 | /gradlew.bat 6 | /local.properties 7 | GeneratedPluginRegistrant.java 8 | -------------------------------------------------------------------------------- /example/android/app/src/debug/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /example/android/app/src/main/kotlin/app/rive/rive_example/MainActivity.kt: -------------------------------------------------------------------------------- 1 | package app.rive.rive_example 2 | 3 | import io.flutter.embedding.android.FlutterActivity 4 | 5 | class MainActivity: FlutterActivity() { 6 | } 7 | -------------------------------------------------------------------------------- /example/android/app/src/main/kotlin/com/example/rive_example/MainActivity.kt: -------------------------------------------------------------------------------- 1 | package com.example.rive_example 2 | 3 | import io.flutter.embedding.android.FlutterActivity 4 | 5 | class MainActivity: FlutterActivity() { 6 | } 7 | -------------------------------------------------------------------------------- /example/android/app/src/main/res/drawable-v21/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /example/android/app/src/main/res/drawable/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rive-app/rive-flutter/2b91ad3e27f6cafccf542e053f464e58e41c6b92/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rive-app/rive-flutter/2b91ad3e27f6cafccf542e053f464e58e41c6b92/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rive-app/rive-flutter/2b91ad3e27f6cafccf542e053f464e58e41c6b92/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rive-app/rive-flutter/2b91ad3e27f6cafccf542e053f464e58e41c6b92/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rive-app/rive-flutter/2b91ad3e27f6cafccf542e053f464e58e41c6b92/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /example/android/app/src/profile/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /example/android/build.gradle: -------------------------------------------------------------------------------- 1 | buildscript { 2 | ext.kotlin_version = '1.9.10' 3 | repositories { 4 | google() 5 | mavenCentral() 6 | } 7 | 8 | dependencies { 9 | classpath 'com.android.tools.build:gradle:7.1.3' 10 | classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" 11 | } 12 | } 13 | 14 | allprojects { 15 | repositories { 16 | google() 17 | mavenCentral() 18 | } 19 | } 20 | 21 | rootProject.buildDir = '../build' 22 | subprojects { 23 | project.buildDir = "${rootProject.buildDir}/${project.name}" 24 | } 25 | subprojects { 26 | project.evaluationDependsOn(':app') 27 | } 28 | 29 | tasks.register("clean", Delete) { 30 | delete rootProject.buildDir 31 | } 32 | -------------------------------------------------------------------------------- /example/android/gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.jvmargs=-Xmx1536M 2 | android.useAndroidX=true 3 | android.enableJetifier=true 4 | -------------------------------------------------------------------------------- /example/android/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Fri Jun 23 08:50:38 CEST 2017 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-7.4.2-bin.zip 7 | -------------------------------------------------------------------------------- /example/android/settings.gradle: -------------------------------------------------------------------------------- 1 | // Copyright 2014 The Flutter Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style license that can be 3 | // found in the LICENSE file. 4 | 5 | include ':app' 6 | 7 | def localPropertiesFile = new File(rootProject.projectDir, "local.properties") 8 | def properties = new Properties() 9 | 10 | assert localPropertiesFile.exists() 11 | localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) } 12 | 13 | def flutterSdkPath = properties.getProperty("flutter.sdk") 14 | assert flutterSdkPath != null, "flutter.sdk not set in local.properties" 15 | apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle" 16 | -------------------------------------------------------------------------------- /example/assets/acqua_text_out_of_band.riv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rive-app/rive-flutter/2b91ad3e27f6cafccf542e053f464e58e41c6b92/example/assets/acqua_text_out_of_band.riv -------------------------------------------------------------------------------- /example/assets/audio/racket1-59343.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rive-app/rive-flutter/2b91ad3e27f6cafccf542e053f464e58e41c6b92/example/assets/audio/racket1-59343.wav -------------------------------------------------------------------------------- /example/assets/audio/racket2-59344.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rive-app/rive-flutter/2b91ad3e27f6cafccf542e053f464e58e41c6b92/example/assets/audio/racket2-59344.wav -------------------------------------------------------------------------------- /example/assets/audio/table-59328.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rive-app/rive-flutter/2b91ad3e27f6cafccf542e053f464e58e41c6b92/example/assets/audio/table-59328.wav -------------------------------------------------------------------------------- /example/assets/coyote.riv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rive-app/rive-flutter/2b91ad3e27f6cafccf542e053f464e58e41c6b92/example/assets/coyote.riv -------------------------------------------------------------------------------- /example/assets/embedded_text.riv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rive-app/rive-flutter/2b91ad3e27f6cafccf542e053f464e58e41c6b92/example/assets/embedded_text.riv -------------------------------------------------------------------------------- /example/assets/fonts/Inter-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rive-app/rive-flutter/2b91ad3e27f6cafccf542e053f464e58e41c6b92/example/assets/fonts/Inter-Regular.ttf -------------------------------------------------------------------------------- /example/assets/hit_test_consume.riv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rive-app/rive-flutter/2b91ad3e27f6cafccf542e053f464e58e41c6b92/example/assets/hit_test_consume.riv -------------------------------------------------------------------------------- /example/assets/image_out_of_band.riv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rive-app/rive-flutter/2b91ad3e27f6cafccf542e053f464e58e41c6b92/example/assets/image_out_of_band.riv -------------------------------------------------------------------------------- /example/assets/light_switch.riv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rive-app/rive-flutter/2b91ad3e27f6cafccf542e053f464e58e41c6b92/example/assets/light_switch.riv -------------------------------------------------------------------------------- /example/assets/lip-sync.riv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rive-app/rive-flutter/2b91ad3e27f6cafccf542e053f464e58e41c6b92/example/assets/lip-sync.riv -------------------------------------------------------------------------------- /example/assets/liquid_download.riv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rive-app/rive-flutter/2b91ad3e27f6cafccf542e053f464e58e41c6b92/example/assets/liquid_download.riv -------------------------------------------------------------------------------- /example/assets/little_machine.riv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rive-app/rive-flutter/2b91ad3e27f6cafccf542e053f464e58e41c6b92/example/assets/little_machine.riv -------------------------------------------------------------------------------- /example/assets/off_road_car.riv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rive-app/rive-flutter/2b91ad3e27f6cafccf542e053f464e58e41c6b92/example/assets/off_road_car.riv -------------------------------------------------------------------------------- /example/assets/ping_pong_audio_demo.riv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rive-app/rive-flutter/2b91ad3e27f6cafccf542e053f464e58e41c6b92/example/assets/ping_pong_audio_demo.riv -------------------------------------------------------------------------------- /example/assets/rating_animation.riv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rive-app/rive-flutter/2b91ad3e27f6cafccf542e053f464e58e41c6b92/example/assets/rating_animation.riv -------------------------------------------------------------------------------- /example/assets/rocket.riv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rive-app/rive-flutter/2b91ad3e27f6cafccf542e053f464e58e41c6b92/example/assets/rocket.riv -------------------------------------------------------------------------------- /example/assets/runtime_nested_inputs.riv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rive-app/rive-flutter/2b91ad3e27f6cafccf542e053f464e58e41c6b92/example/assets/runtime_nested_inputs.riv -------------------------------------------------------------------------------- /example/assets/skills.riv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rive-app/rive-flutter/2b91ad3e27f6cafccf542e053f464e58e41c6b92/example/assets/skills.riv -------------------------------------------------------------------------------- /example/assets/skins_demo.riv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rive-app/rive-flutter/2b91ad3e27f6cafccf542e053f464e58e41c6b92/example/assets/skins_demo.riv -------------------------------------------------------------------------------- /example/assets/solo_test.riv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rive-app/rive-flutter/2b91ad3e27f6cafccf542e053f464e58e41c6b92/example/assets/solo_test.riv -------------------------------------------------------------------------------- /example/assets/teeny_tiny.riv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rive-app/rive-flutter/2b91ad3e27f6cafccf542e053f464e58e41c6b92/example/assets/teeny_tiny.riv -------------------------------------------------------------------------------- /example/assets/text_flutter.riv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rive-app/rive-flutter/2b91ad3e27f6cafccf542e053f464e58e41c6b92/example/assets/text_flutter.riv -------------------------------------------------------------------------------- /example/assets/trans_text.riv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rive-app/rive-flutter/2b91ad3e27f6cafccf542e053f464e58e41c6b92/example/assets/trans_text.riv -------------------------------------------------------------------------------- /example/assets/url_event_button.riv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rive-app/rive-flutter/2b91ad3e27f6cafccf542e053f464e58e41c6b92/example/assets/url_event_button.riv -------------------------------------------------------------------------------- /example/assets/vehicles.riv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rive-app/rive-flutter/2b91ad3e27f6cafccf542e053f464e58e41c6b92/example/assets/vehicles.riv -------------------------------------------------------------------------------- /example/ios/.gitignore: -------------------------------------------------------------------------------- 1 | **/dgph 2 | *.mode1v3 3 | *.mode2v3 4 | *.moved-aside 5 | *.pbxuser 6 | *.perspectivev3 7 | **/*sync/ 8 | .sconsign.dblite 9 | .tags* 10 | **/.vagrant/ 11 | **/DerivedData/ 12 | Icon? 13 | **/Pods/ 14 | **/.symlinks/ 15 | profile 16 | xcuserdata 17 | **/.generated/ 18 | Flutter/App.framework 19 | Flutter/Flutter.framework 20 | Flutter/Flutter.podspec 21 | Flutter/Generated.xcconfig 22 | Flutter/ephemeral/ 23 | Flutter/app.flx 24 | Flutter/app.zip 25 | Flutter/flutter_assets/ 26 | Flutter/flutter_export_environment.sh 27 | ServiceDefinitions.json 28 | Runner/GeneratedPluginRegistrant.* 29 | 30 | # Exceptions to above rules. 31 | !default.mode1v3 32 | !default.mode2v3 33 | !default.pbxuser 34 | !default.perspectivev3 35 | -------------------------------------------------------------------------------- /example/ios/Flutter/AppFrameworkInfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | App 9 | CFBundleIdentifier 10 | io.flutter.flutter.app 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | App 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1.0 23 | MinimumOSVersion 24 | 12.0 25 | 26 | 27 | -------------------------------------------------------------------------------- /example/ios/Flutter/Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" 2 | #include "Generated.xcconfig" 3 | -------------------------------------------------------------------------------- /example/ios/Flutter/Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" 2 | #include "Generated.xcconfig" 3 | -------------------------------------------------------------------------------- /example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreviewsEnabled 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /example/ios/Runner.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreviewsEnabled 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /example/ios/Runner/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | import Flutter 2 | import UIKit 3 | 4 | @main 5 | @objc class AppDelegate: FlutterAppDelegate { 6 | override func application( 7 | _ application: UIApplication, 8 | didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? 9 | ) -> Bool { 10 | GeneratedPluginRegistrant.register(with: self) 11 | return super.application(application, didFinishLaunchingWithOptions: launchOptions) 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rive-app/rive-flutter/2b91ad3e27f6cafccf542e053f464e58e41c6b92/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png -------------------------------------------------------------------------------- /example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rive-app/rive-flutter/2b91ad3e27f6cafccf542e053f464e58e41c6b92/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png -------------------------------------------------------------------------------- /example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rive-app/rive-flutter/2b91ad3e27f6cafccf542e053f464e58e41c6b92/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png -------------------------------------------------------------------------------- /example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rive-app/rive-flutter/2b91ad3e27f6cafccf542e053f464e58e41c6b92/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png -------------------------------------------------------------------------------- /example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rive-app/rive-flutter/2b91ad3e27f6cafccf542e053f464e58e41c6b92/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png -------------------------------------------------------------------------------- /example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rive-app/rive-flutter/2b91ad3e27f6cafccf542e053f464e58e41c6b92/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png -------------------------------------------------------------------------------- /example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rive-app/rive-flutter/2b91ad3e27f6cafccf542e053f464e58e41c6b92/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png -------------------------------------------------------------------------------- /example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rive-app/rive-flutter/2b91ad3e27f6cafccf542e053f464e58e41c6b92/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png -------------------------------------------------------------------------------- /example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rive-app/rive-flutter/2b91ad3e27f6cafccf542e053f464e58e41c6b92/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png -------------------------------------------------------------------------------- /example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rive-app/rive-flutter/2b91ad3e27f6cafccf542e053f464e58e41c6b92/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png -------------------------------------------------------------------------------- /example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rive-app/rive-flutter/2b91ad3e27f6cafccf542e053f464e58e41c6b92/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png -------------------------------------------------------------------------------- /example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rive-app/rive-flutter/2b91ad3e27f6cafccf542e053f464e58e41c6b92/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png -------------------------------------------------------------------------------- /example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rive-app/rive-flutter/2b91ad3e27f6cafccf542e053f464e58e41c6b92/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png -------------------------------------------------------------------------------- /example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rive-app/rive-flutter/2b91ad3e27f6cafccf542e053f464e58e41c6b92/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png -------------------------------------------------------------------------------- /example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rive-app/rive-flutter/2b91ad3e27f6cafccf542e053f464e58e41c6b92/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png -------------------------------------------------------------------------------- /example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "LaunchImage.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "LaunchImage@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "LaunchImage@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rive-app/rive-flutter/2b91ad3e27f6cafccf542e053f464e58e41c6b92/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png -------------------------------------------------------------------------------- /example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rive-app/rive-flutter/2b91ad3e27f6cafccf542e053f464e58e41c6b92/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png -------------------------------------------------------------------------------- /example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rive-app/rive-flutter/2b91ad3e27f6cafccf542e053f464e58e41c6b92/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png -------------------------------------------------------------------------------- /example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md: -------------------------------------------------------------------------------- 1 | # Launch Screen Assets 2 | 3 | You can customize the launch screen with your own desired assets by replacing the image files in this directory. 4 | 5 | You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. -------------------------------------------------------------------------------- /example/ios/Runner/Runner-Bridging-Header.h: -------------------------------------------------------------------------------- 1 | #import "GeneratedPluginRegistrant.h" 2 | -------------------------------------------------------------------------------- /example/lib/basic_text.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:rive/rive.dart'; 3 | 4 | /// Basic example playing a Rive animation from a packaged asset. 5 | class BasicText extends StatelessWidget { 6 | const BasicText({Key? key}) : super(key: key); 7 | 8 | @override 9 | Widget build(BuildContext context) { 10 | return Scaffold( 11 | appBar: AppBar( 12 | title: const Text('Basic Text'), 13 | ), 14 | body: const Center( 15 | child: RiveAnimation.asset( 16 | 'assets/text_flutter.riv', 17 | fit: BoxFit.cover, 18 | ), 19 | ), 20 | ); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /example/lib/rive_audio.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:rive/rive.dart'; 3 | 4 | class RiveAudioExample extends StatelessWidget { 5 | const RiveAudioExample({super.key}); 6 | 7 | @override 8 | Widget build(BuildContext context) { 9 | return Scaffold( 10 | appBar: AppBar( 11 | title: const Text('Rive Audio'), 12 | ), 13 | body: const RiveAnimation.asset( 14 | "assets/lip-sync.riv", 15 | artboard: 'Lip_sync_2', 16 | stateMachines: ['State Machine 1'], 17 | ), 18 | ); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /example/lib/simple_animation.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:rive/rive.dart'; 3 | 4 | /// Basic example playing a Rive animation from a packaged asset. 5 | class SimpleAssetAnimation extends StatelessWidget { 6 | const SimpleAssetAnimation({Key? key}) : super(key: key); 7 | 8 | @override 9 | Widget build(BuildContext context) { 10 | return Scaffold( 11 | appBar: AppBar( 12 | title: const Text('Simple Animation'), 13 | ), 14 | body: const Center( 15 | child: RiveAnimation.asset( 16 | 'assets/off_road_car.riv', 17 | fit: BoxFit.cover, 18 | ), 19 | ), 20 | ); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /example/lib/simple_animation_network.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:rive/rive.dart'; 3 | 4 | /// Basic example playing a Rive animation from a network asset. 5 | class SimpleNetworkAnimation extends StatelessWidget { 6 | const SimpleNetworkAnimation({Key? key}) : super(key: key); 7 | 8 | @override 9 | Widget build(BuildContext context) { 10 | return Scaffold( 11 | appBar: AppBar( 12 | title: const Text('Simple Animation'), 13 | ), 14 | body: const Center( 15 | child: RiveAnimation.network( 16 | 'https://cdn.rive.app/animations/vehicles.riv', 17 | fit: BoxFit.cover, 18 | placeHolder: Center(child: CircularProgressIndicator()), 19 | ), 20 | ), 21 | ); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /example/lib/simple_machine_listener.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:rive/rive.dart'; 3 | 4 | class StateMachineListener extends StatefulWidget { 5 | const StateMachineListener({Key? key}) : super(key: key); 6 | 7 | @override 8 | State createState() => _StateMachineListenerState(); 9 | } 10 | 11 | class _StateMachineListenerState extends State { 12 | @override 13 | Widget build(BuildContext context) { 14 | return Scaffold( 15 | appBar: AppBar( 16 | title: const Text('Light Switch'), 17 | ), 18 | body: const Center( 19 | child: RiveAnimation.asset( 20 | 'assets/light_switch.riv', 21 | fit: BoxFit.contain, 22 | stateMachines: ['Switch'], 23 | ), 24 | ), 25 | ); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /example/macos/.gitignore: -------------------------------------------------------------------------------- 1 | # Flutter-related 2 | **/Flutter/ephemeral/ 3 | **/Pods/ 4 | 5 | # Xcode-related 6 | **/dgph 7 | **/xcuserdata/ 8 | -------------------------------------------------------------------------------- /example/macos/Flutter/Flutter-Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" 2 | #include "ephemeral/Flutter-Generated.xcconfig" 3 | -------------------------------------------------------------------------------- /example/macos/Flutter/Flutter-Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" 2 | #include "ephemeral/Flutter-Generated.xcconfig" 3 | -------------------------------------------------------------------------------- /example/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /example/macos/Runner.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /example/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /example/macos/Runner/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | import Cocoa 2 | import FlutterMacOS 3 | 4 | @main 5 | class AppDelegate: FlutterAppDelegate { 6 | override func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool { 7 | return true 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rive-app/rive-flutter/2b91ad3e27f6cafccf542e053f464e58e41c6b92/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png -------------------------------------------------------------------------------- /example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rive-app/rive-flutter/2b91ad3e27f6cafccf542e053f464e58e41c6b92/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png -------------------------------------------------------------------------------- /example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rive-app/rive-flutter/2b91ad3e27f6cafccf542e053f464e58e41c6b92/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png -------------------------------------------------------------------------------- /example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rive-app/rive-flutter/2b91ad3e27f6cafccf542e053f464e58e41c6b92/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png -------------------------------------------------------------------------------- /example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rive-app/rive-flutter/2b91ad3e27f6cafccf542e053f464e58e41c6b92/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png -------------------------------------------------------------------------------- /example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rive-app/rive-flutter/2b91ad3e27f6cafccf542e053f464e58e41c6b92/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png -------------------------------------------------------------------------------- /example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rive-app/rive-flutter/2b91ad3e27f6cafccf542e053f464e58e41c6b92/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png -------------------------------------------------------------------------------- /example/macos/Runner/Configs/AppInfo.xcconfig: -------------------------------------------------------------------------------- 1 | // Application-level settings for the Runner target. 2 | // 3 | // This may be replaced with something auto-generated from metadata (e.g., pubspec.yaml) in the 4 | // future. If not, the values below would default to using the project name when this becomes a 5 | // 'flutter create' template. 6 | 7 | // The application's name. By default this is also the title of the Flutter window. 8 | PRODUCT_NAME = example 9 | 10 | // The application's bundle identifier 11 | PRODUCT_BUNDLE_IDENTIFIER = com.example.example 12 | 13 | // The copyright displayed in application information 14 | PRODUCT_COPYRIGHT = Copyright © 2024 com.example. All rights reserved. 15 | -------------------------------------------------------------------------------- /example/macos/Runner/Configs/Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include "../../Flutter/Flutter-Debug.xcconfig" 2 | #include "Warnings.xcconfig" 3 | -------------------------------------------------------------------------------- /example/macos/Runner/Configs/Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include "../../Flutter/Flutter-Release.xcconfig" 2 | #include "Warnings.xcconfig" 3 | -------------------------------------------------------------------------------- /example/macos/Runner/Configs/Warnings.xcconfig: -------------------------------------------------------------------------------- 1 | WARNING_CFLAGS = -Wall -Wconditional-uninitialized -Wnullable-to-nonnull-conversion -Wmissing-method-return-type -Woverlength-strings 2 | GCC_WARN_UNDECLARED_SELECTOR = YES 3 | CLANG_UNDEFINED_BEHAVIOR_SANITIZER_NULLABILITY = YES 4 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE 5 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES 6 | CLANG_WARN_PRAGMA_PACK = YES 7 | CLANG_WARN_STRICT_PROTOTYPES = YES 8 | CLANG_WARN_COMMA = YES 9 | GCC_WARN_STRICT_SELECTOR_MATCH = YES 10 | CLANG_WARN_OBJC_REPEATED_USE_OF_WEAK = YES 11 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES 12 | GCC_WARN_SHADOW = YES 13 | CLANG_WARN_UNREACHABLE_CODE = YES 14 | -------------------------------------------------------------------------------- /example/macos/Runner/DebugProfile.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | com.apple.security.app-sandbox 6 | 7 | com.apple.security.cs.allow-jit 8 | 9 | com.apple.security.network.server 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /example/macos/Runner/MainFlutterWindow.swift: -------------------------------------------------------------------------------- 1 | import Cocoa 2 | import FlutterMacOS 3 | 4 | class MainFlutterWindow: NSWindow { 5 | override func awakeFromNib() { 6 | let flutterViewController = FlutterViewController() 7 | let windowFrame = self.frame 8 | self.contentViewController = flutterViewController 9 | self.setFrame(windowFrame, display: true) 10 | 11 | RegisterGeneratedPlugins(registry: flutterViewController) 12 | 13 | super.awakeFromNib() 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /example/macos/Runner/Release.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | com.apple.security.app-sandbox 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /example/pubspec.yaml: -------------------------------------------------------------------------------- 1 | name: rive_example 2 | description: A collection of Rive Flutter examples 3 | 4 | publish_to: "none" # Remove this line if you wish to publish to pub.dev 5 | 6 | version: 1.0.0+1 7 | 8 | environment: 9 | sdk: ">=2.17.0 <4.0.0" 10 | 11 | dependencies: 12 | flutter: 13 | sdk: flutter 14 | rive: 15 | path: ../ 16 | http: 17 | url_launcher: ^6.3.1 18 | 19 | dev_dependencies: 20 | flutter_test: 21 | sdk: flutter 22 | flutter_lints: ^2.0.0 23 | 24 | flutter: 25 | uses-material-design: true 26 | 27 | assets: 28 | - assets/ 29 | - assets/fonts/ 30 | - assets/audio/ 31 | -------------------------------------------------------------------------------- /example/web/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rive-app/rive-flutter/2b91ad3e27f6cafccf542e053f464e58e41c6b92/example/web/favicon.png -------------------------------------------------------------------------------- /example/web/icons/Icon-192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rive-app/rive-flutter/2b91ad3e27f6cafccf542e053f464e58e41c6b92/example/web/icons/Icon-192.png -------------------------------------------------------------------------------- /example/web/icons/Icon-512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rive-app/rive-flutter/2b91ad3e27f6cafccf542e053f464e58e41c6b92/example/web/icons/Icon-512.png -------------------------------------------------------------------------------- /example/web/icons/Icon-maskable-192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rive-app/rive-flutter/2b91ad3e27f6cafccf542e053f464e58e41c6b92/example/web/icons/Icon-maskable-192.png -------------------------------------------------------------------------------- /example/web/icons/Icon-maskable-512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rive-app/rive-flutter/2b91ad3e27f6cafccf542e053f464e58e41c6b92/example/web/icons/Icon-maskable-512.png -------------------------------------------------------------------------------- /example/web/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "rive_example", 3 | "short_name": "rive_example", 4 | "start_url": ".", 5 | "display": "standalone", 6 | "background_color": "#0175C2", 7 | "theme_color": "#0175C2", 8 | "description": "A new Flutter project.", 9 | "orientation": "portrait-primary", 10 | "prefer_related_applications": false, 11 | "icons": [ 12 | { 13 | "src": "icons/Icon-192.png", 14 | "sizes": "192x192", 15 | "type": "image/png" 16 | }, 17 | { 18 | "src": "icons/Icon-512.png", 19 | "sizes": "512x512", 20 | "type": "image/png" 21 | } 22 | ] 23 | } 24 | -------------------------------------------------------------------------------- /example/windows/.gitignore: -------------------------------------------------------------------------------- 1 | flutter/ephemeral/ 2 | 3 | # Visual Studio user-specific files. 4 | *.suo 5 | *.user 6 | *.userosscache 7 | *.sln.docstates 8 | 9 | # Visual Studio build-related files. 10 | x64/ 11 | x86/ 12 | 13 | # Visual Studio cache files 14 | # files ending in .cache can be ignored 15 | *.[Cc]ache 16 | # but keep track of directories ending in .cache 17 | !*.[Cc]ache/ 18 | -------------------------------------------------------------------------------- /example/windows/runner/resource.h: -------------------------------------------------------------------------------- 1 | //{{NO_DEPENDENCIES}} 2 | // Microsoft Visual C++ generated include file. 3 | // Used by Runner.rc 4 | // 5 | #define IDI_APP_ICON 101 6 | 7 | // Next default values for new objects 8 | // 9 | #ifdef APSTUDIO_INVOKED 10 | #ifndef APSTUDIO_READONLY_SYMBOLS 11 | #define _APS_NEXT_RESOURCE_VALUE 102 12 | #define _APS_NEXT_COMMAND_VALUE 40001 13 | #define _APS_NEXT_CONTROL_VALUE 1001 14 | #define _APS_NEXT_SYMED_VALUE 101 15 | #endif 16 | #endif 17 | -------------------------------------------------------------------------------- /example/windows/runner/resources/app_icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rive-app/rive-flutter/2b91ad3e27f6cafccf542e053f464e58e41c6b92/example/windows/runner/resources/app_icon.ico -------------------------------------------------------------------------------- /example/windows/runner/runner.exe.manifest: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PerMonitorV2 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /example/windows/runner/utils.h: -------------------------------------------------------------------------------- 1 | #ifndef RUNNER_UTILS_H_ 2 | #define RUNNER_UTILS_H_ 3 | 4 | #include 5 | #include 6 | 7 | // Creates a console for the process, and redirects stdout and stderr to 8 | // it for both the runner and the Flutter library. 9 | void CreateAndAttachConsole(); 10 | 11 | // Takes a null-terminated wchar_t* encoded in UTF-16 and returns a std::string 12 | // encoded in UTF-8. Returns an empty std::string on failure. 13 | std::string Utf8FromUtf16(const wchar_t* utf16_string); 14 | 15 | // Gets the command line arguments passed in as a std::vector, 16 | // encoded in UTF-8. Returns an empty std::vector on failure. 17 | std::vector GetCommandLineArguments(); 18 | 19 | #endif // RUNNER_UTILS_H_ 20 | -------------------------------------------------------------------------------- /lib/components.dart: -------------------------------------------------------------------------------- 1 | export 'package:rive/src/rive_core/node.dart'; 2 | export 'package:rive/src/rive_core/transform_component.dart'; 3 | export 'package:rive/src/rive_core/world_transform_component.dart'; 4 | -------------------------------------------------------------------------------- /lib/math.dart: -------------------------------------------------------------------------------- 1 | export 'package:rive_common/math.dart'; 2 | -------------------------------------------------------------------------------- /lib/rive_web.dart: -------------------------------------------------------------------------------- 1 | // In order to *not* need this ignore, consider extracting the "web" version 2 | // of your plugin as a separate package, instead of inlining it in the same 3 | // package as the core of your plugin. 4 | // ignore: avoid_web_libraries_in_flutter 5 | 6 | // ignore_for_file: avoid_classes_with_only_static_members 7 | 8 | import 'package:flutter_web_plugins/flutter_web_plugins.dart'; 9 | 10 | /// A web implementation of the RivePlatform of the Rive plugin. 11 | class RivePlugin { 12 | /// Constructs a RiveWeb 13 | RivePlugin(); 14 | 15 | static void registerWith(Registrar registrar) {} 16 | } 17 | -------------------------------------------------------------------------------- /lib/src/animation_list.dart: -------------------------------------------------------------------------------- 1 | import 'dart:collection'; 2 | import 'package:rive/src/rive_core/animation/animation.dart'; 3 | 4 | class AnimationList extends ListBase { 5 | // Lame way to do this due to how ListBase needs to expand a nullable list. 6 | final List _values = []; 7 | List get values => _values.cast(); 8 | 9 | @override 10 | int get length => _values.length; 11 | 12 | @override 13 | set length(int value) => _values.length = value; 14 | 15 | @override 16 | Animation operator [](int index) => _values[index]!; 17 | 18 | @override 19 | void operator []=(int index, Animation value) => _values[index] = value; 20 | } 21 | -------------------------------------------------------------------------------- /lib/src/asset_list.dart: -------------------------------------------------------------------------------- 1 | import 'dart:collection'; 2 | 3 | import 'package:rive/src/rive_core/assets/asset.dart'; 4 | 5 | // List of assets used by the backboard. 6 | class AssetList extends ListBase { 7 | final List _values = []; 8 | List get values => _values.cast(); 9 | 10 | @override 11 | int get length => _values.length; 12 | 13 | @override 14 | set length(int value) => _values.length = value; 15 | 16 | @override 17 | Asset operator [](int index) => _values[index]!; 18 | 19 | @override 20 | void operator []=(int index, Asset value) => _values[index] = value; 21 | } 22 | -------------------------------------------------------------------------------- /lib/src/blend_animations.dart: -------------------------------------------------------------------------------- 1 | import 'dart:collection'; 2 | 3 | import 'package:rive/src/rive_core/animation/blend_animation.dart'; 4 | 5 | class BlendAnimations extends ListBase { 6 | final List _values = []; 7 | List get values => _values.cast(); 8 | 9 | @override 10 | int get length => _values.length; 11 | 12 | @override 13 | set length(int value) => _values.length = value; 14 | 15 | @override 16 | T operator [](int index) => _values[index]!; 17 | 18 | @override 19 | void operator []=(int index, T value) => _values[index] = value; 20 | } 21 | -------------------------------------------------------------------------------- /lib/src/container_children.dart: -------------------------------------------------------------------------------- 1 | import 'dart:collection'; 2 | import 'package:rive/src/rive_core/component.dart'; 3 | 4 | // TODO: figure out how to make this cleaner. 5 | class ContainerChildren extends ListBase { 6 | final List _values = []; 7 | List get values => _values.cast(); 8 | 9 | @override 10 | int get length => _values.length; 11 | 12 | @override 13 | set length(int value) => _values.length = value; 14 | 15 | @override 16 | Component operator [](int index) => _values[index]!; 17 | 18 | @override 19 | void operator []=(int index, Component value) => _values[index] = value; 20 | } 21 | -------------------------------------------------------------------------------- /lib/src/core/field_types/core_bool_type.dart: -------------------------------------------------------------------------------- 1 | import 'package:rive/src/core/field_types/core_field_type.dart'; 2 | import 'package:rive_common/utilities.dart'; 3 | 4 | class CoreBoolType extends CoreFieldType { 5 | @override 6 | bool deserialize(BinaryReader reader) => reader.readInt8() == 1; 7 | } 8 | -------------------------------------------------------------------------------- /lib/src/core/field_types/core_bytes_type.dart: -------------------------------------------------------------------------------- 1 | import 'dart:typed_data'; 2 | 3 | import 'package:rive/src/core/field_types/core_field_type.dart'; 4 | import 'package:rive_common/utilities.dart'; 5 | 6 | class CoreBytesType extends CoreFieldType { 7 | @override 8 | Uint8List deserialize(BinaryReader reader) { 9 | var length = reader.readVarUint(); 10 | return reader.read(length); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /lib/src/core/field_types/core_callback_type.dart: -------------------------------------------------------------------------------- 1 | import 'package:rive/src/core/field_types/core_field_type.dart'; 2 | import 'package:rive_common/utilities.dart'; 3 | 4 | class CallbackData { 5 | final Object? context; 6 | final double delay; 7 | CallbackData( 8 | this.context, { 9 | required this.delay, 10 | }); 11 | } 12 | 13 | class CoreCallbackType extends CoreFieldType { 14 | @override 15 | int deserialize(BinaryReader reader) => 0; 16 | } 17 | -------------------------------------------------------------------------------- /lib/src/core/field_types/core_color_type.dart: -------------------------------------------------------------------------------- 1 | import 'package:rive/src/core/field_types/core_field_type.dart'; 2 | import 'package:rive_common/utilities.dart'; 3 | 4 | class CoreColorType extends CoreFieldType { 5 | @override 6 | int deserialize(BinaryReader reader) => reader.readUint32(); 7 | } 8 | -------------------------------------------------------------------------------- /lib/src/core/field_types/core_double_type.dart: -------------------------------------------------------------------------------- 1 | import 'package:rive/src/core/field_types/core_field_type.dart'; 2 | import 'package:rive_common/utilities.dart'; 3 | 4 | class CoreDoubleType extends CoreFieldType { 5 | @override 6 | double deserialize(BinaryReader reader) => reader.readFloat32(); 7 | } 8 | -------------------------------------------------------------------------------- /lib/src/core/field_types/core_field_type.dart: -------------------------------------------------------------------------------- 1 | import 'package:rive_common/utilities.dart'; 2 | 3 | // ignore: one_member_abstracts 4 | abstract class CoreFieldType { 5 | T deserialize(BinaryReader reader); 6 | void skip(BinaryReader reader) => deserialize(reader); 7 | } 8 | -------------------------------------------------------------------------------- /lib/src/core/field_types/core_int_type.dart: -------------------------------------------------------------------------------- 1 | import 'package:rive/src/core/field_types/core_field_type.dart'; 2 | import 'package:rive_common/utilities.dart'; 3 | 4 | class CoreIntType extends CoreFieldType { 5 | @override 6 | int deserialize(BinaryReader reader) => reader.readVarUint(); 7 | } 8 | -------------------------------------------------------------------------------- /lib/src/core/field_types/core_string_type.dart: -------------------------------------------------------------------------------- 1 | import 'package:rive/src/core/field_types/core_field_type.dart'; 2 | import 'package:rive_common/utilities.dart'; 3 | 4 | class CoreStringType extends CoreFieldType { 5 | @override 6 | String deserialize(BinaryReader reader) => 7 | reader.readString(explicitLength: true); 8 | 9 | @override 10 | void skip(BinaryReader reader) { 11 | var length = reader.readVarUint(); 12 | reader.read(length); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /lib/src/core/field_types/core_uint_type.dart: -------------------------------------------------------------------------------- 1 | import 'package:rive/src/core/field_types/core_field_type.dart'; 2 | import 'package:rive_common/utilities.dart'; 3 | 4 | class CoreUintType extends CoreFieldType { 5 | @override 6 | int deserialize(BinaryReader reader) => reader.readVarUint(); 7 | } 8 | -------------------------------------------------------------------------------- /lib/src/core/importers/artboard_import_stack_object.dart: -------------------------------------------------------------------------------- 1 | import 'package:rive/src/core/core.dart'; 2 | import 'package:rive/src/rive_core/artboard.dart'; 3 | 4 | /// An importer that will always resolve with the artboard importer. 5 | abstract class ArtboardImportStackObject extends ImportStackObject { 6 | @override 7 | int get resolvesBefore => ArtboardBase.typeKey; 8 | } 9 | -------------------------------------------------------------------------------- /lib/src/core/importers/keyed_object_importer.dart: -------------------------------------------------------------------------------- 1 | import 'package:rive/src/core/importers/artboard_import_stack_object.dart'; 2 | import 'package:rive/src/rive_core/animation/keyed_object.dart'; 3 | import 'package:rive/src/rive_core/animation/keyed_property.dart'; 4 | 5 | class KeyedObjectImporter extends ArtboardImportStackObject { 6 | final KeyedObject keyedObject; 7 | 8 | KeyedObjectImporter(this.keyedObject); 9 | 10 | void addKeyedProperty(KeyedProperty property) { 11 | keyedObject.context.addObject(property); 12 | keyedObject.internalAddKeyedProperty(property); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /lib/src/core/importers/keyed_property_importer.dart: -------------------------------------------------------------------------------- 1 | import 'package:rive/src/core/importers/artboard_import_stack_object.dart'; 2 | import 'package:rive/src/rive_core/animation/keyed_property.dart'; 3 | import 'package:rive/src/rive_core/animation/keyframe.dart'; 4 | import 'package:rive/src/rive_core/animation/linear_animation.dart'; 5 | 6 | class KeyedPropertyImporter extends ArtboardImportStackObject { 7 | final KeyedProperty keyedProperty; 8 | final LinearAnimation animation; 9 | 10 | KeyedPropertyImporter(this.keyedProperty, this.animation); 11 | 12 | void addKeyFrame(KeyFrame keyFrame) { 13 | keyedProperty.context.addObject(keyFrame); 14 | keyedProperty.internalAddKeyFrame(keyFrame); 15 | keyFrame.computeSeconds(animation); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /lib/src/core/importers/linear_animation_importer.dart: -------------------------------------------------------------------------------- 1 | import 'package:rive/rive.dart'; 2 | import 'package:rive/src/core/importers/artboard_import_stack_object.dart'; 3 | import 'package:rive/src/rive_core/animation/keyed_object.dart'; 4 | 5 | class LinearAnimationImporter extends ArtboardImportStackObject { 6 | final LinearAnimation linearAnimation; 7 | LinearAnimationImporter(this.linearAnimation); 8 | 9 | void addKeyedObject(KeyedObject object) { 10 | linearAnimation.context.addObject(object); 11 | linearAnimation.internalAddKeyedObject(object); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /lib/src/core/importers/nested_state_machine_importer.dart: -------------------------------------------------------------------------------- 1 | import 'package:rive/src/core/importers/artboard_import_stack_object.dart'; 2 | import 'package:rive/src/rive_core/animation/nested_input.dart'; 3 | import 'package:rive/src/rive_core/animation/nested_state_machine.dart'; 4 | 5 | class NestedStateMachineImporter extends ArtboardImportStackObject { 6 | final NestedStateMachine stateMachine; 7 | NestedStateMachineImporter(this.stateMachine); 8 | 9 | final List _inputs = []; 10 | void addNestedInput(NestedInput nestedInput) { 11 | _inputs.add(nestedInput); 12 | } 13 | 14 | @override 15 | bool resolve() { 16 | for (final input in _inputs) { 17 | input.parent = stateMachine; 18 | } 19 | return super.resolve(); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /lib/src/core/importers/state_machine_importer.dart: -------------------------------------------------------------------------------- 1 | import 'package:rive/src/core/importers/artboard_import_stack_object.dart'; 2 | import 'package:rive/src/rive_core/animation/state_machine.dart'; 3 | import 'package:rive/src/rive_core/animation/state_machine_component.dart'; 4 | 5 | class StateMachineImporter extends ArtboardImportStackObject { 6 | final StateMachine machine; 7 | StateMachineImporter(this.machine); 8 | 9 | void addMachineComponent(StateMachineComponent object) { 10 | machine.context.addObject(object); 11 | object.stateMachine = machine; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /lib/src/core/importers/state_machine_layer_component_importer.dart: -------------------------------------------------------------------------------- 1 | import 'package:rive/src/core/importers/artboard_import_stack_object.dart'; 2 | import 'package:rive/src/rive_core/animation/state_machine_fire_event.dart'; 3 | import 'package:rive/src/rive_core/animation/state_machine_layer_component.dart'; 4 | 5 | class StateMachineLayerComponentImporter extends ArtboardImportStackObject { 6 | final StateMachineLayerComponent component; 7 | StateMachineLayerComponentImporter(this.component); 8 | 9 | void addFireEvent(StateMachineFireEvent event) { 10 | component.internalAddFireEvent(event); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /lib/src/core/importers/state_machine_listener_importer.dart: -------------------------------------------------------------------------------- 1 | import 'package:rive/src/core/importers/artboard_import_stack_object.dart'; 2 | import 'package:rive/src/rive_core/animation/listener_action.dart'; 3 | import 'package:rive/src/rive_core/animation/state_machine_listener.dart'; 4 | 5 | class StateMachineListenerImporter extends ArtboardImportStackObject { 6 | final StateMachineListener listener; 7 | StateMachineListenerImporter(this.listener); 8 | 9 | void addAction(ListenerAction change) { 10 | listener.internalAddAction(change); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /lib/src/core/importers/viewmodel_instance_importer.dart: -------------------------------------------------------------------------------- 1 | import 'package:rive/src/core/core.dart'; 2 | import 'package:rive/src/rive_core/viewmodel/viewmodel_instance.dart'; 3 | import 'package:rive/src/rive_core/viewmodel/viewmodel_instance_value.dart'; 4 | 5 | class ViewModelInstanceImporter extends ImportStackObject { 6 | final ViewModelInstance viewModelInstance; 7 | ViewModelInstanceImporter(this.viewModelInstance); 8 | 9 | void addValue(ViewModelInstanceValue value) { 10 | viewModelInstance.addPropertyValue(value); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /lib/src/data_enum_values.dart: -------------------------------------------------------------------------------- 1 | import 'dart:collection'; 2 | 3 | import 'package:rive/src/rive_core/viewmodel/data_enum_value.dart'; 4 | 5 | class DataEnumValues extends ListBase { 6 | final List _values = []; 7 | List get values => _values.cast(); 8 | 9 | @override 10 | int get length => _values.length; 11 | 12 | @override 13 | set length(int value) => _values.length = value; 14 | 15 | @override 16 | T operator [](int index) => _values[index]!; 17 | 18 | @override 19 | void operator []=(int index, T value) => _values[index] = value; 20 | } 21 | -------------------------------------------------------------------------------- /lib/src/debug.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/foundation.dart'; 2 | 3 | /// Print a message only when running in debug. 4 | void printDebugMessage(String message) { 5 | assert(() { 6 | debugPrint(message); 7 | return true; 8 | }()); 9 | } 10 | -------------------------------------------------------------------------------- /lib/src/dynamic_library_helper/dynamic_library_helper_ffi.dart: -------------------------------------------------------------------------------- 1 | export 'package:rive_common/src/dynamic_library_helper.dart' 2 | show applyWorkaroundToRiveOnOldAndroidVersions; 3 | -------------------------------------------------------------------------------- /lib/src/dynamic_library_helper/dynamic_library_helper_stub.dart: -------------------------------------------------------------------------------- 1 | void applyWorkaroundToRiveOnOldAndroidVersions() { 2 | throw UnsupportedError('Platform not supported'); 3 | } 4 | -------------------------------------------------------------------------------- /lib/src/dynamic_library_helper/dynamic_library_helper_web.dart: -------------------------------------------------------------------------------- 1 | // Mock implementation for web 2 | void applyWorkaroundToRiveOnOldAndroidVersions() {} 3 | -------------------------------------------------------------------------------- /lib/src/event_list.dart: -------------------------------------------------------------------------------- 1 | import 'dart:collection'; 2 | import 'package:rive/src/rive_core/event.dart'; 3 | 4 | class EventList extends ListBase { 5 | // Lame way to do this due to how ListBase needs to expand a nullable list. 6 | final List _values = []; 7 | List get values => _values.cast(); 8 | 9 | @override 10 | int get length => _values.length; 11 | 12 | @override 13 | set length(int value) => _values.length = value; 14 | 15 | @override 16 | Event operator [](int index) => _values[index]!; 17 | 18 | @override 19 | void operator []=(int index, Event value) => _values[index] = value; 20 | } 21 | -------------------------------------------------------------------------------- /lib/src/generated/animation/any_state_base.dart: -------------------------------------------------------------------------------- 1 | // Core automatically generated 2 | // lib/src/generated/animation/any_state_base.dart. 3 | // Do not modify manually. 4 | 5 | import 'package:rive/src/generated/animation/state_machine_layer_component_base.dart'; 6 | import 'package:rive/src/rive_core/animation/layer_state.dart'; 7 | 8 | abstract class AnyStateBase extends LayerState { 9 | static const int typeKey = 62; 10 | @override 11 | int get coreType => AnyStateBase.typeKey; 12 | @override 13 | Set get coreTypes => { 14 | AnyStateBase.typeKey, 15 | LayerStateBase.typeKey, 16 | StateMachineLayerComponentBase.typeKey 17 | }; 18 | } 19 | -------------------------------------------------------------------------------- /lib/src/generated/animation/blend_state_base.dart: -------------------------------------------------------------------------------- 1 | // Core automatically generated 2 | // lib/src/generated/animation/blend_state_base.dart. 3 | // Do not modify manually. 4 | 5 | import 'package:rive/src/generated/animation/state_machine_layer_component_base.dart'; 6 | import 'package:rive/src/rive_core/animation/layer_state.dart'; 7 | 8 | abstract class BlendStateBase extends LayerState { 9 | static const int typeKey = 72; 10 | @override 11 | int get coreType => BlendStateBase.typeKey; 12 | @override 13 | Set get coreTypes => { 14 | BlendStateBase.typeKey, 15 | LayerStateBase.typeKey, 16 | StateMachineLayerComponentBase.typeKey 17 | }; 18 | } 19 | -------------------------------------------------------------------------------- /lib/src/generated/animation/blend_state_direct_base.dart: -------------------------------------------------------------------------------- 1 | // Core automatically generated 2 | // lib/src/generated/animation/blend_state_direct_base.dart. 3 | // Do not modify manually. 4 | 5 | import 'package:rive/src/generated/animation/layer_state_base.dart'; 6 | import 'package:rive/src/generated/animation/state_machine_layer_component_base.dart'; 7 | import 'package:rive/src/rive_core/animation/blend_animation_direct.dart'; 8 | import 'package:rive/src/rive_core/animation/blend_state.dart'; 9 | 10 | abstract class BlendStateDirectBase extends BlendState { 11 | static const int typeKey = 73; 12 | @override 13 | int get coreType => BlendStateDirectBase.typeKey; 14 | @override 15 | Set get coreTypes => { 16 | BlendStateDirectBase.typeKey, 17 | BlendStateBase.typeKey, 18 | LayerStateBase.typeKey, 19 | StateMachineLayerComponentBase.typeKey 20 | }; 21 | } 22 | -------------------------------------------------------------------------------- /lib/src/generated/animation/cubic_ease_interpolator_base.dart: -------------------------------------------------------------------------------- 1 | // Core automatically generated 2 | // lib/src/generated/animation/cubic_ease_interpolator_base.dart. 3 | // Do not modify manually. 4 | 5 | import 'package:rive/src/generated/animation/keyframe_interpolator_base.dart'; 6 | import 'package:rive/src/rive_core/animation/cubic_interpolator.dart'; 7 | 8 | abstract class CubicEaseInterpolatorBase extends CubicInterpolator { 9 | static const int typeKey = 28; 10 | @override 11 | int get coreType => CubicEaseInterpolatorBase.typeKey; 12 | @override 13 | Set get coreTypes => { 14 | CubicEaseInterpolatorBase.typeKey, 15 | CubicInterpolatorBase.typeKey, 16 | KeyFrameInterpolatorBase.typeKey 17 | }; 18 | } 19 | -------------------------------------------------------------------------------- /lib/src/generated/animation/cubic_value_interpolator_base.dart: -------------------------------------------------------------------------------- 1 | // Core automatically generated 2 | // lib/src/generated/animation/cubic_value_interpolator_base.dart. 3 | // Do not modify manually. 4 | 5 | import 'package:rive/src/generated/animation/keyframe_interpolator_base.dart'; 6 | import 'package:rive/src/rive_core/animation/cubic_interpolator.dart'; 7 | 8 | abstract class CubicValueInterpolatorBase extends CubicInterpolator { 9 | static const int typeKey = 138; 10 | @override 11 | int get coreType => CubicValueInterpolatorBase.typeKey; 12 | @override 13 | Set get coreTypes => { 14 | CubicValueInterpolatorBase.typeKey, 15 | CubicInterpolatorBase.typeKey, 16 | KeyFrameInterpolatorBase.typeKey 17 | }; 18 | } 19 | -------------------------------------------------------------------------------- /lib/src/generated/animation/entry_state_base.dart: -------------------------------------------------------------------------------- 1 | // Core automatically generated 2 | // lib/src/generated/animation/entry_state_base.dart. 3 | // Do not modify manually. 4 | 5 | import 'package:rive/src/generated/animation/state_machine_layer_component_base.dart'; 6 | import 'package:rive/src/rive_core/animation/layer_state.dart'; 7 | 8 | abstract class EntryStateBase extends LayerState { 9 | static const int typeKey = 63; 10 | @override 11 | int get coreType => EntryStateBase.typeKey; 12 | @override 13 | Set get coreTypes => { 14 | EntryStateBase.typeKey, 15 | LayerStateBase.typeKey, 16 | StateMachineLayerComponentBase.typeKey 17 | }; 18 | } 19 | -------------------------------------------------------------------------------- /lib/src/generated/animation/exit_state_base.dart: -------------------------------------------------------------------------------- 1 | // Core automatically generated 2 | // lib/src/generated/animation/exit_state_base.dart. 3 | // Do not modify manually. 4 | 5 | import 'package:rive/src/generated/animation/state_machine_layer_component_base.dart'; 6 | import 'package:rive/src/rive_core/animation/layer_state.dart'; 7 | 8 | abstract class ExitStateBase extends LayerState { 9 | static const int typeKey = 64; 10 | @override 11 | int get coreType => ExitStateBase.typeKey; 12 | @override 13 | Set get coreTypes => { 14 | ExitStateBase.typeKey, 15 | LayerStateBase.typeKey, 16 | StateMachineLayerComponentBase.typeKey 17 | }; 18 | } 19 | -------------------------------------------------------------------------------- /lib/src/generated/animation/keyframe_callback_base.dart: -------------------------------------------------------------------------------- 1 | // Core automatically generated 2 | // lib/src/generated/animation/keyframe_callback_base.dart. 3 | // Do not modify manually. 4 | 5 | import 'package:rive/src/rive_core/animation/keyframe.dart'; 6 | 7 | abstract class KeyFrameCallbackBase extends KeyFrame { 8 | static const int typeKey = 171; 9 | @override 10 | int get coreType => KeyFrameCallbackBase.typeKey; 11 | @override 12 | Set get coreTypes => 13 | {KeyFrameCallbackBase.typeKey, KeyFrameBase.typeKey}; 14 | } 15 | -------------------------------------------------------------------------------- /lib/src/generated/animation/keyframe_interpolator_base.dart: -------------------------------------------------------------------------------- 1 | // Core automatically generated 2 | // lib/src/generated/animation/keyframe_interpolator_base.dart. 3 | // Do not modify manually. 4 | 5 | import 'package:rive/src/core/core.dart'; 6 | 7 | abstract class KeyFrameInterpolatorBase extends Core { 8 | static const int typeKey = 175; 9 | @override 10 | int get coreType => KeyFrameInterpolatorBase.typeKey; 11 | @override 12 | Set get coreTypes => {KeyFrameInterpolatorBase.typeKey}; 13 | } 14 | -------------------------------------------------------------------------------- /lib/src/generated/animation/listener_action_base.dart: -------------------------------------------------------------------------------- 1 | // Core automatically generated 2 | // lib/src/generated/animation/listener_action_base.dart. 3 | // Do not modify manually. 4 | 5 | import 'package:rive/src/core/core.dart'; 6 | 7 | abstract class ListenerActionBase extends Core { 8 | static const int typeKey = 125; 9 | @override 10 | int get coreType => ListenerActionBase.typeKey; 11 | @override 12 | Set get coreTypes => {ListenerActionBase.typeKey}; 13 | } 14 | -------------------------------------------------------------------------------- /lib/src/generated/animation/listener_trigger_change_base.dart: -------------------------------------------------------------------------------- 1 | // Core automatically generated 2 | // lib/src/generated/animation/listener_trigger_change_base.dart. 3 | // Do not modify manually. 4 | 5 | import 'package:rive/src/generated/animation/listener_action_base.dart'; 6 | import 'package:rive/src/rive_core/animation/listener_input_change.dart'; 7 | 8 | abstract class ListenerTriggerChangeBase extends ListenerInputChange { 9 | static const int typeKey = 115; 10 | @override 11 | int get coreType => ListenerTriggerChangeBase.typeKey; 12 | @override 13 | Set get coreTypes => { 14 | ListenerTriggerChangeBase.typeKey, 15 | ListenerInputChangeBase.typeKey, 16 | ListenerActionBase.typeKey 17 | }; 18 | } 19 | -------------------------------------------------------------------------------- /lib/src/generated/animation/listener_viewmodel_change_base.dart: -------------------------------------------------------------------------------- 1 | // Core automatically generated 2 | // lib/src/generated/animation/listener_viewmodel_change_base.dart. 3 | // Do not modify manually. 4 | 5 | import 'package:rive/src/rive_core/animation/listener_action.dart'; 6 | 7 | abstract class ListenerViewModelChangeBase extends ListenerAction { 8 | static const int typeKey = 487; 9 | @override 10 | int get coreType => ListenerViewModelChangeBase.typeKey; 11 | @override 12 | Set get coreTypes => 13 | {ListenerViewModelChangeBase.typeKey, ListenerActionBase.typeKey}; 14 | } 15 | -------------------------------------------------------------------------------- /lib/src/generated/animation/nested_state_machine_base.dart: -------------------------------------------------------------------------------- 1 | // Core automatically generated 2 | // lib/src/generated/animation/nested_state_machine_base.dart. 3 | // Do not modify manually. 4 | 5 | import 'package:rive/src/generated/component_base.dart'; 6 | import 'package:rive/src/generated/container_component_base.dart'; 7 | import 'package:rive/src/rive_core/animation/state_machine.dart'; 8 | import 'package:rive/src/rive_core/nested_animation.dart'; 9 | 10 | abstract class NestedStateMachineBase extends NestedAnimation { 11 | static const int typeKey = 95; 12 | @override 13 | int get coreType => NestedStateMachineBase.typeKey; 14 | @override 15 | Set get coreTypes => { 16 | NestedStateMachineBase.typeKey, 17 | NestedAnimationBase.typeKey, 18 | ContainerComponentBase.typeKey, 19 | ComponentBase.typeKey 20 | }; 21 | } 22 | -------------------------------------------------------------------------------- /lib/src/generated/animation/nested_trigger_base.dart: -------------------------------------------------------------------------------- 1 | // Core automatically generated 2 | // lib/src/generated/animation/nested_trigger_base.dart. 3 | // Do not modify manually. 4 | 5 | import 'package:rive/src/core/core.dart'; 6 | import 'package:rive/src/generated/component_base.dart'; 7 | import 'package:rive/src/rive_core/animation/nested_input.dart'; 8 | 9 | abstract class NestedTriggerBase extends NestedInput { 10 | static const int typeKey = 122; 11 | @override 12 | int get coreType => NestedTriggerBase.typeKey; 13 | @override 14 | Set get coreTypes => { 15 | NestedTriggerBase.typeKey, 16 | NestedInputBase.typeKey, 17 | ComponentBase.typeKey 18 | }; 19 | 20 | /// -------------------------------------------------------------------------- 21 | /// Fire field with key 401. 22 | static const int firePropertyKey = 401; 23 | void fire(CallbackData value); 24 | } 25 | -------------------------------------------------------------------------------- /lib/src/generated/animation/state_machine_base.dart: -------------------------------------------------------------------------------- 1 | // Core automatically generated 2 | // lib/src/generated/animation/state_machine_base.dart. 3 | // Do not modify manually. 4 | 5 | import 'package:rive/src/rive_core/animation/animation.dart'; 6 | 7 | abstract class StateMachineBase extends Animation { 8 | static const int typeKey = 53; 9 | @override 10 | int get coreType => StateMachineBase.typeKey; 11 | @override 12 | Set get coreTypes => {StateMachineBase.typeKey, AnimationBase.typeKey}; 13 | } 14 | -------------------------------------------------------------------------------- /lib/src/generated/animation/state_machine_input_base.dart: -------------------------------------------------------------------------------- 1 | // Core automatically generated 2 | // lib/src/generated/animation/state_machine_input_base.dart. 3 | // Do not modify manually. 4 | 5 | import 'package:rive/src/rive_core/animation/state_machine_component.dart'; 6 | 7 | abstract class StateMachineInputBase extends StateMachineComponent { 8 | static const int typeKey = 55; 9 | @override 10 | int get coreType => StateMachineInputBase.typeKey; 11 | @override 12 | Set get coreTypes => 13 | {StateMachineInputBase.typeKey, StateMachineComponentBase.typeKey}; 14 | } 15 | -------------------------------------------------------------------------------- /lib/src/generated/animation/state_machine_layer_base.dart: -------------------------------------------------------------------------------- 1 | // Core automatically generated 2 | // lib/src/generated/animation/state_machine_layer_base.dart. 3 | // Do not modify manually. 4 | 5 | import 'package:rive/src/rive_core/animation/state_machine_component.dart'; 6 | 7 | abstract class StateMachineLayerBase extends StateMachineComponent { 8 | static const int typeKey = 57; 9 | @override 10 | int get coreType => StateMachineLayerBase.typeKey; 11 | @override 12 | Set get coreTypes => 13 | {StateMachineLayerBase.typeKey, StateMachineComponentBase.typeKey}; 14 | } 15 | -------------------------------------------------------------------------------- /lib/src/generated/animation/state_machine_layer_component_base.dart: -------------------------------------------------------------------------------- 1 | // Core automatically generated 2 | // lib/src/generated/animation/state_machine_layer_component_base.dart. 3 | // Do not modify manually. 4 | 5 | import 'package:rive/src/core/core.dart'; 6 | 7 | abstract class StateMachineLayerComponentBase 8 | extends Core { 9 | static const int typeKey = 66; 10 | @override 11 | int get coreType => StateMachineLayerComponentBase.typeKey; 12 | @override 13 | Set get coreTypes => {StateMachineLayerComponentBase.typeKey}; 14 | } 15 | -------------------------------------------------------------------------------- /lib/src/generated/animation/state_machine_trigger_base.dart: -------------------------------------------------------------------------------- 1 | // Core automatically generated 2 | // lib/src/generated/animation/state_machine_trigger_base.dart. 3 | // Do not modify manually. 4 | 5 | import 'package:rive/src/generated/animation/state_machine_component_base.dart'; 6 | import 'package:rive/src/rive_core/animation/state_machine_input.dart'; 7 | 8 | abstract class StateMachineTriggerBase extends StateMachineInput { 9 | static const int typeKey = 58; 10 | @override 11 | int get coreType => StateMachineTriggerBase.typeKey; 12 | @override 13 | Set get coreTypes => { 14 | StateMachineTriggerBase.typeKey, 15 | StateMachineInputBase.typeKey, 16 | StateMachineComponentBase.typeKey 17 | }; 18 | } 19 | -------------------------------------------------------------------------------- /lib/src/generated/animation/transition_artboard_condition_base.dart: -------------------------------------------------------------------------------- 1 | // Core automatically generated 2 | // lib/src/generated/animation/transition_artboard_condition_base.dart. 3 | // Do not modify manually. 4 | 5 | import 'package:rive/src/generated/animation/transition_condition_base.dart'; 6 | import 'package:rive/src/rive_core/animation/transition_viewmodel_condition.dart'; 7 | 8 | abstract class TransitionArtboardConditionBase 9 | extends TransitionViewModelCondition { 10 | static const int typeKey = 497; 11 | @override 12 | int get coreType => TransitionArtboardConditionBase.typeKey; 13 | @override 14 | Set get coreTypes => { 15 | TransitionArtboardConditionBase.typeKey, 16 | TransitionViewModelConditionBase.typeKey, 17 | TransitionConditionBase.typeKey 18 | }; 19 | } 20 | -------------------------------------------------------------------------------- /lib/src/generated/animation/transition_bool_condition_base.dart: -------------------------------------------------------------------------------- 1 | // Core automatically generated 2 | // lib/src/generated/animation/transition_bool_condition_base.dart. 3 | // Do not modify manually. 4 | 5 | import 'package:rive/src/generated/animation/transition_condition_base.dart'; 6 | import 'package:rive/src/generated/animation/transition_input_condition_base.dart'; 7 | import 'package:rive/src/rive_core/animation/transition_value_condition.dart'; 8 | 9 | abstract class TransitionBoolConditionBase extends TransitionValueCondition { 10 | static const int typeKey = 71; 11 | @override 12 | int get coreType => TransitionBoolConditionBase.typeKey; 13 | @override 14 | Set get coreTypes => { 15 | TransitionBoolConditionBase.typeKey, 16 | TransitionValueConditionBase.typeKey, 17 | TransitionInputConditionBase.typeKey, 18 | TransitionConditionBase.typeKey 19 | }; 20 | } 21 | -------------------------------------------------------------------------------- /lib/src/generated/animation/transition_comparator_base.dart: -------------------------------------------------------------------------------- 1 | // Core automatically generated 2 | // lib/src/generated/animation/transition_comparator_base.dart. 3 | // Do not modify manually. 4 | 5 | import 'package:rive/src/core/core.dart'; 6 | 7 | abstract class TransitionComparatorBase extends Core { 8 | static const int typeKey = 477; 9 | @override 10 | int get coreType => TransitionComparatorBase.typeKey; 11 | @override 12 | Set get coreTypes => {TransitionComparatorBase.typeKey}; 13 | } 14 | -------------------------------------------------------------------------------- /lib/src/generated/animation/transition_condition_base.dart: -------------------------------------------------------------------------------- 1 | // Core automatically generated 2 | // lib/src/generated/animation/transition_condition_base.dart. 3 | // Do not modify manually. 4 | 5 | import 'package:rive/src/core/core.dart'; 6 | 7 | abstract class TransitionConditionBase extends Core { 8 | static const int typeKey = 476; 9 | @override 10 | int get coreType => TransitionConditionBase.typeKey; 11 | @override 12 | Set get coreTypes => {TransitionConditionBase.typeKey}; 13 | } 14 | -------------------------------------------------------------------------------- /lib/src/generated/animation/transition_property_comparator_base.dart: -------------------------------------------------------------------------------- 1 | // Core automatically generated 2 | // lib/src/generated/animation/transition_property_comparator_base.dart. 3 | // Do not modify manually. 4 | 5 | import 'package:rive/src/rive_core/animation/transition_comparator.dart'; 6 | 7 | abstract class TransitionPropertyComparatorBase extends TransitionComparator { 8 | static const int typeKey = 478; 9 | @override 10 | int get coreType => TransitionPropertyComparatorBase.typeKey; 11 | @override 12 | Set get coreTypes => { 13 | TransitionPropertyComparatorBase.typeKey, 14 | TransitionComparatorBase.typeKey 15 | }; 16 | } 17 | -------------------------------------------------------------------------------- /lib/src/generated/animation/transition_property_viewmodel_comparator_base.dart: -------------------------------------------------------------------------------- 1 | // Core automatically generated 2 | // nullnull 3 | // rt. 4 | // Do not modify manually. 5 | 6 | import 'package:rive/src/generated/animation/transition_comparator_base.dart'; 7 | import 'package:rive/src/rive_core/animation/transition_property_comparator.dart'; 8 | 9 | abstract class TransitionPropertyViewModelComparatorBase 10 | extends TransitionPropertyComparator { 11 | static const int typeKey = 479; 12 | @override 13 | int get coreType => TransitionPropertyViewModelComparatorBase.typeKey; 14 | @override 15 | Set get coreTypes => { 16 | TransitionPropertyViewModelComparatorBase.typeKey, 17 | TransitionPropertyComparatorBase.typeKey, 18 | TransitionComparatorBase.typeKey 19 | }; 20 | } 21 | -------------------------------------------------------------------------------- /lib/src/generated/animation/transition_trigger_condition_base.dart: -------------------------------------------------------------------------------- 1 | // Core automatically generated 2 | // lib/src/generated/animation/transition_trigger_condition_base.dart. 3 | // Do not modify manually. 4 | 5 | import 'package:rive/src/generated/animation/transition_condition_base.dart'; 6 | import 'package:rive/src/rive_core/animation/transition_input_condition.dart'; 7 | 8 | abstract class TransitionTriggerConditionBase extends TransitionInputCondition { 9 | static const int typeKey = 68; 10 | @override 11 | int get coreType => TransitionTriggerConditionBase.typeKey; 12 | @override 13 | Set get coreTypes => { 14 | TransitionTriggerConditionBase.typeKey, 15 | TransitionInputConditionBase.typeKey, 16 | TransitionConditionBase.typeKey 17 | }; 18 | } 19 | -------------------------------------------------------------------------------- /lib/src/generated/animation/transition_value_comparator_base.dart: -------------------------------------------------------------------------------- 1 | // Core automatically generated 2 | // lib/src/generated/animation/transition_value_comparator_base.dart. 3 | // Do not modify manually. 4 | 5 | import 'package:rive/src/rive_core/animation/transition_comparator.dart'; 6 | 7 | abstract class TransitionValueComparatorBase extends TransitionComparator { 8 | static const int typeKey = 480; 9 | @override 10 | int get coreType => TransitionValueComparatorBase.typeKey; 11 | @override 12 | Set get coreTypes => 13 | {TransitionValueComparatorBase.typeKey, TransitionComparatorBase.typeKey}; 14 | } 15 | -------------------------------------------------------------------------------- /lib/src/generated/asset_base.dart: -------------------------------------------------------------------------------- 1 | /// Core automatically generated lib/src/generated/asset_base.dart. 2 | /// Do not modify manually. 3 | 4 | import 'package:rive/src/core/core.dart'; 5 | 6 | abstract class AssetBase extends Core { 7 | static const int typeKey = 99; 8 | @override 9 | int get coreType => AssetBase.typeKey; 10 | @override 11 | Set get coreTypes => {AssetBase.typeKey}; 12 | } 13 | -------------------------------------------------------------------------------- /lib/src/generated/assets/audio_asset_base.dart: -------------------------------------------------------------------------------- 1 | // Core automatically generated lib/src/generated/assets/audio_asset_base.dart. 2 | // Do not modify manually. 3 | 4 | import 'package:rive/src/generated/assets/asset_base.dart'; 5 | import 'package:rive/src/generated/assets/file_asset_base.dart'; 6 | import 'package:rive/src/rive_core/assets/export_audio.dart'; 7 | 8 | abstract class AudioAssetBase extends ExportAudio { 9 | static const int typeKey = 406; 10 | @override 11 | int get coreType => AudioAssetBase.typeKey; 12 | @override 13 | Set get coreTypes => { 14 | AudioAssetBase.typeKey, 15 | ExportAudioBase.typeKey, 16 | FileAssetBase.typeKey, 17 | AssetBase.typeKey 18 | }; 19 | } 20 | -------------------------------------------------------------------------------- /lib/src/generated/assets/folder_base.dart: -------------------------------------------------------------------------------- 1 | // Core automatically generated lib/src/generated/assets/folder_base.dart. 2 | // Do not modify manually. 3 | 4 | import 'package:rive/src/rive_core/assets/asset.dart'; 5 | 6 | abstract class FolderBase extends Asset { 7 | static const int typeKey = 102; 8 | @override 9 | int get coreType => FolderBase.typeKey; 10 | @override 11 | Set get coreTypes => {FolderBase.typeKey, AssetBase.typeKey}; 12 | } 13 | -------------------------------------------------------------------------------- /lib/src/generated/assets/font_asset_base.dart: -------------------------------------------------------------------------------- 1 | // Core automatically generated lib/src/generated/assets/font_asset_base.dart. 2 | // Do not modify manually. 3 | 4 | import 'package:rive/src/generated/assets/asset_base.dart'; 5 | import 'package:rive/src/rive_core/assets/file_asset.dart'; 6 | 7 | abstract class FontAssetBase extends FileAsset { 8 | static const int typeKey = 141; 9 | @override 10 | int get coreType => FontAssetBase.typeKey; 11 | @override 12 | Set get coreTypes => 13 | {FontAssetBase.typeKey, FileAssetBase.typeKey, AssetBase.typeKey}; 14 | } 15 | -------------------------------------------------------------------------------- /lib/src/generated/assets/image_asset_base.dart: -------------------------------------------------------------------------------- 1 | // Core automatically generated lib/src/generated/assets/image_asset_base.dart. 2 | // Do not modify manually. 3 | 4 | import 'package:rive/src/generated/assets/asset_base.dart'; 5 | import 'package:rive/src/generated/assets/file_asset_base.dart'; 6 | import 'package:rive/src/rive_core/assets/drawable_asset.dart'; 7 | 8 | abstract class ImageAssetBase extends DrawableAsset { 9 | static const int typeKey = 105; 10 | @override 11 | int get coreType => ImageAssetBase.typeKey; 12 | @override 13 | Set get coreTypes => { 14 | ImageAssetBase.typeKey, 15 | DrawableAssetBase.typeKey, 16 | FileAssetBase.typeKey, 17 | AssetBase.typeKey 18 | }; 19 | } 20 | -------------------------------------------------------------------------------- /lib/src/generated/backboard_base.dart: -------------------------------------------------------------------------------- 1 | // Core automatically generated lib/src/generated/backboard_base.dart. 2 | // Do not modify manually. 3 | 4 | import 'package:rive/src/core/core.dart'; 5 | 6 | abstract class BackboardBase extends Core { 7 | static const int typeKey = 23; 8 | @override 9 | int get coreType => BackboardBase.typeKey; 10 | @override 11 | Set get coreTypes => {BackboardBase.typeKey}; 12 | } 13 | -------------------------------------------------------------------------------- /lib/src/generated/bones/skeletal_component_base.dart: -------------------------------------------------------------------------------- 1 | // Core automatically generated 2 | // lib/src/generated/bones/skeletal_component_base.dart. 3 | // Do not modify manually. 4 | 5 | import 'package:rive/src/generated/component_base.dart'; 6 | import 'package:rive/src/generated/container_component_base.dart'; 7 | import 'package:rive/src/generated/world_transform_component_base.dart'; 8 | import 'package:rive/src/rive_core/transform_component.dart'; 9 | 10 | abstract class SkeletalComponentBase extends TransformComponent { 11 | static const int typeKey = 39; 12 | @override 13 | int get coreType => SkeletalComponentBase.typeKey; 14 | @override 15 | Set get coreTypes => { 16 | SkeletalComponentBase.typeKey, 17 | TransformComponentBase.typeKey, 18 | WorldTransformComponentBase.typeKey, 19 | ContainerComponentBase.typeKey, 20 | ComponentBase.typeKey 21 | }; 22 | } 23 | -------------------------------------------------------------------------------- /lib/src/generated/container_component_base.dart: -------------------------------------------------------------------------------- 1 | // Core automatically generated 2 | // lib/src/generated/container_component_base.dart. 3 | // Do not modify manually. 4 | 5 | import 'package:rive/src/rive_core/component.dart'; 6 | 7 | abstract class ContainerComponentBase extends Component { 8 | static const int typeKey = 11; 9 | @override 10 | int get coreType => ContainerComponentBase.typeKey; 11 | @override 12 | Set get coreTypes => 13 | {ContainerComponentBase.typeKey, ComponentBase.typeKey}; 14 | } 15 | -------------------------------------------------------------------------------- /lib/src/generated/custom_property_base.dart: -------------------------------------------------------------------------------- 1 | // Core automatically generated lib/src/generated/custom_property_base.dart. 2 | // Do not modify manually. 3 | 4 | import 'package:rive/src/rive_core/component.dart'; 5 | 6 | abstract class CustomPropertyBase extends Component { 7 | static const int typeKey = 167; 8 | @override 9 | int get coreType => CustomPropertyBase.typeKey; 10 | @override 11 | Set get coreTypes => {CustomPropertyBase.typeKey, ComponentBase.typeKey}; 12 | } 13 | -------------------------------------------------------------------------------- /lib/src/generated/data_bind/bindable_property_base.dart: -------------------------------------------------------------------------------- 1 | // Core automatically generated 2 | // lib/src/generated/data_bind/bindable_property_base.dart. 3 | // Do not modify manually. 4 | 5 | import 'package:rive/src/core/core.dart'; 6 | 7 | abstract class BindablePropertyBase extends Core { 8 | static const int typeKey = 9; 9 | @override 10 | int get coreType => BindablePropertyBase.typeKey; 11 | @override 12 | Set get coreTypes => {BindablePropertyBase.typeKey}; 13 | } 14 | -------------------------------------------------------------------------------- /lib/src/generated/event_base.dart: -------------------------------------------------------------------------------- 1 | // Core automatically generated lib/src/generated/event_base.dart. 2 | // Do not modify manually. 3 | 4 | import 'package:rive/src/generated/component_base.dart'; 5 | import 'package:rive/src/generated/container_component_base.dart'; 6 | import 'package:rive/src/rive_core/container_component.dart'; 7 | 8 | abstract class EventBase extends ContainerComponent { 9 | static const int typeKey = 128; 10 | @override 11 | int get coreType => EventBase.typeKey; 12 | @override 13 | Set get coreTypes => { 14 | EventBase.typeKey, 15 | ContainerComponentBase.typeKey, 16 | ComponentBase.typeKey 17 | }; 18 | 19 | /// -------------------------------------------------------------------------- 20 | /// Trigger field with key 395. 21 | static const int triggerPropertyKey = 395; 22 | void trigger(CallbackData value); 23 | } 24 | -------------------------------------------------------------------------------- /lib/src/generated/layout_component_absolute_base.dart: -------------------------------------------------------------------------------- 1 | // Core automatically generated 2 | // lib/src/generated/layout_component_absolute_base.dart. 3 | // Do not modify manually. 4 | 5 | import 'package:rive/src/generated/component_base.dart'; 6 | import 'package:rive/src/generated/container_component_base.dart'; 7 | import 'package:rive/src/generated/world_transform_component_base.dart'; 8 | import 'package:rive/src/rive_core/layout_component.dart'; 9 | 10 | abstract class AbsoluteLayoutComponentBase extends LayoutComponent { 11 | static const int typeKey = 423; 12 | @override 13 | int get coreType => AbsoluteLayoutComponentBase.typeKey; 14 | @override 15 | Set get coreTypes => { 16 | AbsoluteLayoutComponentBase.typeKey, 17 | LayoutComponentBase.typeKey, 18 | WorldTransformComponentBase.typeKey, 19 | ContainerComponentBase.typeKey, 20 | ComponentBase.typeKey 21 | }; 22 | } 23 | -------------------------------------------------------------------------------- /lib/src/generated/shapes/contour_mesh_vertex_base.dart: -------------------------------------------------------------------------------- 1 | // Core automatically generated 2 | // lib/src/generated/shapes/contour_mesh_vertex_base.dart. 3 | // Do not modify manually. 4 | 5 | import 'package:rive/src/generated/component_base.dart'; 6 | import 'package:rive/src/generated/container_component_base.dart'; 7 | import 'package:rive/src/generated/shapes/vertex_base.dart'; 8 | import 'package:rive/src/rive_core/shapes/mesh_vertex.dart'; 9 | 10 | abstract class ContourMeshVertexBase extends MeshVertex { 11 | static const int typeKey = 111; 12 | @override 13 | int get coreType => ContourMeshVertexBase.typeKey; 14 | @override 15 | Set get coreTypes => { 16 | ContourMeshVertexBase.typeKey, 17 | MeshVertexBase.typeKey, 18 | VertexBase.typeKey, 19 | ContainerComponentBase.typeKey, 20 | ComponentBase.typeKey 21 | }; 22 | } 23 | -------------------------------------------------------------------------------- /lib/src/generated/shapes/cubic_vertex_base.dart: -------------------------------------------------------------------------------- 1 | // Core automatically generated 2 | // lib/src/generated/shapes/cubic_vertex_base.dart. 3 | // Do not modify manually. 4 | 5 | import 'package:rive/src/generated/component_base.dart'; 6 | import 'package:rive/src/generated/container_component_base.dart'; 7 | import 'package:rive/src/generated/shapes/vertex_base.dart'; 8 | import 'package:rive/src/rive_core/bones/cubic_weight.dart'; 9 | import 'package:rive/src/rive_core/shapes/path_vertex.dart'; 10 | 11 | abstract class CubicVertexBase extends PathVertex { 12 | static const int typeKey = 36; 13 | @override 14 | int get coreType => CubicVertexBase.typeKey; 15 | @override 16 | Set get coreTypes => { 17 | CubicVertexBase.typeKey, 18 | PathVertexBase.typeKey, 19 | VertexBase.typeKey, 20 | ContainerComponentBase.typeKey, 21 | ComponentBase.typeKey 22 | }; 23 | } 24 | -------------------------------------------------------------------------------- /lib/src/generated/shapes/paint/radial_gradient_base.dart: -------------------------------------------------------------------------------- 1 | // Core automatically generated 2 | // lib/src/generated/shapes/paint/radial_gradient_base.dart. 3 | // Do not modify manually. 4 | 5 | import 'package:rive/src/generated/component_base.dart'; 6 | import 'package:rive/src/generated/container_component_base.dart'; 7 | import 'package:rive/src/rive_core/shapes/paint/linear_gradient.dart'; 8 | 9 | abstract class RadialGradientBase extends LinearGradient { 10 | static const int typeKey = 17; 11 | @override 12 | int get coreType => RadialGradientBase.typeKey; 13 | @override 14 | Set get coreTypes => { 15 | RadialGradientBase.typeKey, 16 | LinearGradientBase.typeKey, 17 | ContainerComponentBase.typeKey, 18 | ComponentBase.typeKey 19 | }; 20 | } 21 | -------------------------------------------------------------------------------- /lib/src/generated/shapes/path_composer_base.dart: -------------------------------------------------------------------------------- 1 | /// Core automatically generated 2 | /// lib/src/generated/shapes/path_composer_base.dart. 3 | /// Do not modify manually. 4 | 5 | import 'package:rive/src/rive_core/component.dart'; 6 | 7 | abstract class PathComposerBase extends Component { 8 | static const int typeKey = 9; 9 | @override 10 | int get coreType => PathComposerBase.typeKey; 11 | @override 12 | Set get coreTypes => {PathComposerBase.typeKey, ComponentBase.typeKey}; 13 | } 14 | -------------------------------------------------------------------------------- /lib/src/generated/shapes/path_vertex_base.dart: -------------------------------------------------------------------------------- 1 | // Core automatically generated lib/src/generated/shapes/path_vertex_base.dart. 2 | // Do not modify manually. 3 | 4 | import 'package:rive/src/generated/component_base.dart'; 5 | import 'package:rive/src/generated/container_component_base.dart'; 6 | import 'package:rive/src/rive_core/bones/weight.dart'; 7 | import 'package:rive/src/rive_core/shapes/vertex.dart'; 8 | 9 | abstract class PathVertexBase extends Vertex { 10 | static const int typeKey = 14; 11 | @override 12 | int get coreType => PathVertexBase.typeKey; 13 | @override 14 | Set get coreTypes => { 15 | PathVertexBase.typeKey, 16 | VertexBase.typeKey, 17 | ContainerComponentBase.typeKey, 18 | ComponentBase.typeKey 19 | }; 20 | } 21 | -------------------------------------------------------------------------------- /lib/src/generated/shapes/shape_base.dart: -------------------------------------------------------------------------------- 1 | // Core automatically generated lib/src/generated/shapes/shape_base.dart. 2 | // Do not modify manually. 3 | 4 | import 'package:rive/src/generated/component_base.dart'; 5 | import 'package:rive/src/generated/container_component_base.dart'; 6 | import 'package:rive/src/generated/node_base.dart'; 7 | import 'package:rive/src/generated/transform_component_base.dart'; 8 | import 'package:rive/src/generated/world_transform_component_base.dart'; 9 | import 'package:rive/src/rive_core/drawable.dart'; 10 | 11 | abstract class ShapeBase extends Drawable { 12 | static const int typeKey = 3; 13 | @override 14 | int get coreType => ShapeBase.typeKey; 15 | @override 16 | Set get coreTypes => { 17 | ShapeBase.typeKey, 18 | DrawableBase.typeKey, 19 | NodeBase.typeKey, 20 | TransformComponentBase.typeKey, 21 | WorldTransformComponentBase.typeKey, 22 | ContainerComponentBase.typeKey, 23 | ComponentBase.typeKey 24 | }; 25 | } 26 | -------------------------------------------------------------------------------- /lib/src/generated/text/text_modifier_base.dart: -------------------------------------------------------------------------------- 1 | // Core automatically generated lib/src/generated/text/text_modifier_base.dart. 2 | // Do not modify manually. 3 | 4 | import 'package:rive/src/rive_core/component.dart'; 5 | 6 | abstract class TextModifierBase extends Component { 7 | static const int typeKey = 160; 8 | @override 9 | int get coreType => TextModifierBase.typeKey; 10 | @override 11 | Set get coreTypes => {TextModifierBase.typeKey, ComponentBase.typeKey}; 12 | } 13 | -------------------------------------------------------------------------------- /lib/src/generated/text/text_shape_modifier_base.dart: -------------------------------------------------------------------------------- 1 | // Core automatically generated 2 | // lib/src/generated/text/text_shape_modifier_base.dart. 3 | // Do not modify manually. 4 | 5 | import 'package:rive/src/generated/component_base.dart'; 6 | import 'package:rive/src/rive_core/text/text_modifier.dart'; 7 | 8 | abstract class TextShapeModifierBase extends TextModifier { 9 | static const int typeKey = 161; 10 | @override 11 | int get coreType => TextShapeModifierBase.typeKey; 12 | @override 13 | Set get coreTypes => { 14 | TextShapeModifierBase.typeKey, 15 | TextModifierBase.typeKey, 16 | ComponentBase.typeKey 17 | }; 18 | } 19 | -------------------------------------------------------------------------------- /lib/src/generated/viewmodel/data_enum_base.dart: -------------------------------------------------------------------------------- 1 | // Core automatically generated 2 | // lib/src/generated/viewmodel/data_enum_base.dart. 3 | // Do not modify manually. 4 | 5 | import 'package:rive/src/core/core.dart'; 6 | 7 | abstract class DataEnumBase extends Core { 8 | static const int typeKey = 438; 9 | @override 10 | int get coreType => DataEnumBase.typeKey; 11 | @override 12 | Set get coreTypes => {DataEnumBase.typeKey}; 13 | } 14 | -------------------------------------------------------------------------------- /lib/src/generated/viewmodel/viewmodel_instance_list_base.dart: -------------------------------------------------------------------------------- 1 | // Core automatically generated 2 | // lib/src/generated/viewmodel/viewmodel_instance_list_base.dart. 3 | // Do not modify manually. 4 | 5 | import 'package:rive/src/generated/viewmodel/viewmodel_instance_value_base.dart'; 6 | import 'package:rive/src/rive_core/viewmodel/viewmodel_instance_value.dart'; 7 | 8 | abstract class ViewModelInstanceListBase extends ViewModelInstanceValue { 9 | static const int typeKey = 441; 10 | @override 11 | int get coreType => ViewModelInstanceListBase.typeKey; 12 | @override 13 | Set get coreTypes => 14 | {ViewModelInstanceListBase.typeKey, ViewModelInstanceValueBase.typeKey}; 15 | } 16 | -------------------------------------------------------------------------------- /lib/src/generated/viewmodel/viewmodel_property_base.dart: -------------------------------------------------------------------------------- 1 | // Core automatically generated 2 | // lib/src/generated/viewmodel/viewmodel_property_base.dart. 3 | // Do not modify manually. 4 | 5 | import 'package:rive/src/rive_core/viewmodel/viewmodel_component.dart'; 6 | 7 | abstract class ViewModelPropertyBase extends ViewModelComponent { 8 | static const int typeKey = 430; 9 | @override 10 | int get coreType => ViewModelPropertyBase.typeKey; 11 | @override 12 | Set get coreTypes => 13 | {ViewModelPropertyBase.typeKey, ViewModelComponentBase.typeKey}; 14 | } 15 | -------------------------------------------------------------------------------- /lib/src/generated/viewmodel/viewmodel_property_boolean_base.dart: -------------------------------------------------------------------------------- 1 | // Core automatically generated 2 | // lib/src/generated/viewmodel/viewmodel_property_boolean_base.dart. 3 | // Do not modify manually. 4 | 5 | import 'package:rive/src/generated/viewmodel/viewmodel_component_base.dart'; 6 | import 'package:rive/src/rive_core/viewmodel/viewmodel_property.dart'; 7 | 8 | abstract class ViewModelPropertyBooleanBase extends ViewModelProperty { 9 | static const int typeKey = 448; 10 | @override 11 | int get coreType => ViewModelPropertyBooleanBase.typeKey; 12 | @override 13 | Set get coreTypes => { 14 | ViewModelPropertyBooleanBase.typeKey, 15 | ViewModelPropertyBase.typeKey, 16 | ViewModelComponentBase.typeKey 17 | }; 18 | } 19 | -------------------------------------------------------------------------------- /lib/src/generated/viewmodel/viewmodel_property_color_base.dart: -------------------------------------------------------------------------------- 1 | // Core automatically generated 2 | // lib/src/generated/viewmodel/viewmodel_property_color_base.dart. 3 | // Do not modify manually. 4 | 5 | import 'package:rive/src/generated/viewmodel/viewmodel_component_base.dart'; 6 | import 'package:rive/src/rive_core/viewmodel/viewmodel_property.dart'; 7 | 8 | abstract class ViewModelPropertyColorBase extends ViewModelProperty { 9 | static const int typeKey = 440; 10 | @override 11 | int get coreType => ViewModelPropertyColorBase.typeKey; 12 | @override 13 | Set get coreTypes => { 14 | ViewModelPropertyColorBase.typeKey, 15 | ViewModelPropertyBase.typeKey, 16 | ViewModelComponentBase.typeKey 17 | }; 18 | } 19 | -------------------------------------------------------------------------------- /lib/src/generated/viewmodel/viewmodel_property_list_base.dart: -------------------------------------------------------------------------------- 1 | // Core automatically generated 2 | // lib/src/generated/viewmodel/viewmodel_property_list_base.dart. 3 | // Do not modify manually. 4 | 5 | import 'package:rive/src/generated/viewmodel/viewmodel_component_base.dart'; 6 | import 'package:rive/src/rive_core/viewmodel/viewmodel_property.dart'; 7 | 8 | abstract class ViewModelPropertyListBase extends ViewModelProperty { 9 | static const int typeKey = 434; 10 | @override 11 | int get coreType => ViewModelPropertyListBase.typeKey; 12 | @override 13 | Set get coreTypes => { 14 | ViewModelPropertyListBase.typeKey, 15 | ViewModelPropertyBase.typeKey, 16 | ViewModelComponentBase.typeKey 17 | }; 18 | } 19 | -------------------------------------------------------------------------------- /lib/src/generated/viewmodel/viewmodel_property_number_base.dart: -------------------------------------------------------------------------------- 1 | // Core automatically generated 2 | // lib/src/generated/viewmodel/viewmodel_property_number_base.dart. 3 | // Do not modify manually. 4 | 5 | import 'package:rive/src/generated/viewmodel/viewmodel_component_base.dart'; 6 | import 'package:rive/src/rive_core/viewmodel/viewmodel_property.dart'; 7 | 8 | abstract class ViewModelPropertyNumberBase extends ViewModelProperty { 9 | static const int typeKey = 431; 10 | @override 11 | int get coreType => ViewModelPropertyNumberBase.typeKey; 12 | @override 13 | Set get coreTypes => { 14 | ViewModelPropertyNumberBase.typeKey, 15 | ViewModelPropertyBase.typeKey, 16 | ViewModelComponentBase.typeKey 17 | }; 18 | } 19 | -------------------------------------------------------------------------------- /lib/src/generated/viewmodel/viewmodel_property_string_base.dart: -------------------------------------------------------------------------------- 1 | // Core automatically generated 2 | // lib/src/generated/viewmodel/viewmodel_property_string_base.dart. 3 | // Do not modify manually. 4 | 5 | import 'package:rive/src/generated/viewmodel/viewmodel_component_base.dart'; 6 | import 'package:rive/src/rive_core/viewmodel/viewmodel_property.dart'; 7 | 8 | abstract class ViewModelPropertyStringBase extends ViewModelProperty { 9 | static const int typeKey = 443; 10 | @override 11 | int get coreType => ViewModelPropertyStringBase.typeKey; 12 | @override 13 | Set get coreTypes => { 14 | ViewModelPropertyStringBase.typeKey, 15 | ViewModelPropertyBase.typeKey, 16 | ViewModelComponentBase.typeKey 17 | }; 18 | } 19 | -------------------------------------------------------------------------------- /lib/src/layer_component_events.dart: -------------------------------------------------------------------------------- 1 | import 'dart:collection'; 2 | 3 | import 'package:rive/src/rive_core/animation/state_machine_fire_event.dart'; 4 | 5 | class LayerComponentEvents extends ListBase { 6 | final List _values = []; 7 | List get values => 8 | _values.cast(); 9 | 10 | @override 11 | int get length => _values.length; 12 | 13 | @override 14 | set length(int value) => _values.length = value; 15 | 16 | @override 17 | StateMachineFireEvent operator [](int index) => _values[index]!; 18 | 19 | @override 20 | void operator []=(int index, StateMachineFireEvent value) => 21 | _values[index] = value; 22 | } 23 | -------------------------------------------------------------------------------- /lib/src/listener_actions.dart: -------------------------------------------------------------------------------- 1 | import 'dart:collection'; 2 | 3 | import 'package:rive/src/rive_core/animation/listener_action.dart'; 4 | 5 | class ListenerActions extends ListBase { 6 | final List _values = []; 7 | List get values => _values.cast(); 8 | 9 | @override 10 | int get length => _values.length; 11 | 12 | @override 13 | set length(int value) => _values.length = value; 14 | 15 | @override 16 | ListenerAction operator [](int index) => _values[index]!; 17 | 18 | @override 19 | void operator []=(int index, ListenerAction value) => _values[index] = value; 20 | } 21 | -------------------------------------------------------------------------------- /lib/src/local_file_io.dart: -------------------------------------------------------------------------------- 1 | import 'dart:io'; 2 | import 'dart:typed_data'; 3 | 4 | /// Load a list of bytes from a file on the local filesystem at [path]. 5 | Future localFileBytes(String path) => File(path).readAsBytes(); 6 | -------------------------------------------------------------------------------- /lib/src/local_file_web.dart: -------------------------------------------------------------------------------- 1 | import 'dart:typed_data'; 2 | 3 | /// Load a list of bytes from a file on the local filesystem at [path]. 4 | Future localFileBytes(String path) => 5 | throw UnsupportedError('Cannot load from a local file on the web.'); 6 | -------------------------------------------------------------------------------- /lib/src/platform.dart: -------------------------------------------------------------------------------- 1 | import 'platform_native.dart' if (dart.library.js_interop) 'platform_web.dart'; 2 | 3 | abstract class Platform { 4 | bool get isTesting; 5 | static final Platform instance = makePlatform(); 6 | } 7 | -------------------------------------------------------------------------------- /lib/src/platform_native.dart: -------------------------------------------------------------------------------- 1 | import 'dart:io' as io show Platform; 2 | 3 | import 'platform.dart'; 4 | 5 | Platform makePlatform() => PlatformNative(); 6 | 7 | class PlatformNative extends Platform { 8 | @override 9 | bool get isTesting => io.Platform.environment.containsKey('FLUTTER_TEST'); 10 | } 11 | -------------------------------------------------------------------------------- /lib/src/platform_web.dart: -------------------------------------------------------------------------------- 1 | import 'platform.dart'; 2 | 3 | Platform makePlatform() => PlatformWeb(); 4 | 5 | class PlatformWeb extends Platform { 6 | @override 7 | bool get isTesting => false; 8 | } 9 | -------------------------------------------------------------------------------- /lib/src/rive_core/animation/advanceable_state.dart: -------------------------------------------------------------------------------- 1 | import 'package:rive/src/generated/animation/advanceable_state_base.dart'; 2 | export 'package:rive/src/generated/animation/advanceable_state_base.dart'; 3 | 4 | abstract class AdvanceableState extends AdvanceableStateBase { 5 | @override 6 | void speedChanged(double from, double to) {} 7 | } 8 | -------------------------------------------------------------------------------- /lib/src/rive_core/animation/animation.dart: -------------------------------------------------------------------------------- 1 | import 'package:rive/src/core/core.dart'; 2 | import 'package:rive/src/generated/animation/animation_base.dart'; 3 | import 'package:rive/src/rive_core/artboard.dart'; 4 | 5 | export 'package:rive/src/generated/animation/animation_base.dart'; 6 | 7 | class Animation extends AnimationBase { 8 | Artboard? _artboard; 9 | 10 | Artboard? get artboard => _artboard; 11 | set artboard(Artboard? value) { 12 | if (_artboard == value) { 13 | return; 14 | } 15 | 16 | _artboard?.internalRemoveAnimation(this); 17 | _artboard = value; 18 | _artboard?.internalAddAnimation(this); 19 | } 20 | 21 | @override 22 | void onAddedDirty() {} 23 | 24 | @override 25 | void onAdded() {} 26 | 27 | @override 28 | bool validate() => super.validate() && _artboard != null; 29 | 30 | @override 31 | void nameChanged(String from, String to) {} 32 | } 33 | -------------------------------------------------------------------------------- /lib/src/rive_core/animation/any_state.dart: -------------------------------------------------------------------------------- 1 | import 'package:rive/src/generated/animation/any_state_base.dart'; 2 | import 'package:rive/src/rive_core/animation/state_instance.dart'; 3 | 4 | export 'package:rive/src/generated/animation/any_state_base.dart'; 5 | 6 | class AnyState extends AnyStateBase { 7 | @override 8 | StateInstance makeInstance() => SystemStateInstance(this); 9 | } 10 | -------------------------------------------------------------------------------- /lib/src/rive_core/animation/blend_animation_1d.dart: -------------------------------------------------------------------------------- 1 | import 'package:rive/src/generated/animation/blend_animation_1d_base.dart'; 2 | export 'package:rive/src/generated/animation/blend_animation_1d_base.dart'; 3 | 4 | class BlendAnimation1D extends BlendAnimation1DBase { 5 | @override 6 | void valueChanged(double from, double to) {} 7 | } 8 | -------------------------------------------------------------------------------- /lib/src/rive_core/animation/blend_state.dart: -------------------------------------------------------------------------------- 1 | import 'package:rive/src/core/core.dart'; 2 | import 'package:rive/src/generated/animation/blend_state_base.dart'; 3 | import 'package:rive/src/rive_core/animation/blend_animation.dart'; 4 | 5 | export 'package:rive/src/generated/animation/blend_state_base.dart'; 6 | 7 | // 8 | abstract class BlendState extends BlendStateBase { 9 | final BlendAnimations _animations = BlendAnimations(); 10 | BlendAnimations get animations => _animations; 11 | 12 | void internalAddAnimation(T animation) { 13 | assert(!_animations.contains(animation), 14 | 'shouldn\'t already contain the animation'); 15 | _animations.add(animation); 16 | } 17 | 18 | void internalRemoveAnimation(T animation) { 19 | _animations.remove(animation); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /lib/src/rive_core/animation/blend_state_direct.dart: -------------------------------------------------------------------------------- 1 | import 'package:rive/src/generated/animation/blend_state_direct_base.dart'; 2 | import 'package:rive/src/rive_core/animation/blend_state_direct_instance.dart'; 3 | import 'package:rive/src/rive_core/animation/state_instance.dart'; 4 | 5 | export 'package:rive/src/generated/animation/blend_state_direct_base.dart'; 6 | 7 | class BlendStateDirect extends BlendStateDirectBase { 8 | @override 9 | StateInstance makeInstance() => BlendStateDirectInstance(this); 10 | } 11 | -------------------------------------------------------------------------------- /lib/src/rive_core/animation/entry_state.dart: -------------------------------------------------------------------------------- 1 | import 'package:rive/src/generated/animation/entry_state_base.dart'; 2 | import 'package:rive/src/rive_core/animation/state_instance.dart'; 3 | 4 | export 'package:rive/src/generated/animation/entry_state_base.dart'; 5 | 6 | class EntryState extends EntryStateBase { 7 | @override 8 | StateInstance makeInstance() => SystemStateInstance(this); 9 | } 10 | -------------------------------------------------------------------------------- /lib/src/rive_core/animation/exit_state.dart: -------------------------------------------------------------------------------- 1 | import 'package:rive/src/generated/animation/exit_state_base.dart'; 2 | import 'package:rive/src/rive_core/animation/state_instance.dart'; 3 | 4 | export 'package:rive/src/generated/animation/exit_state_base.dart'; 5 | 6 | class ExitState extends ExitStateBase { 7 | @override 8 | StateInstance makeInstance() => SystemStateInstance(this); 9 | } 10 | -------------------------------------------------------------------------------- /lib/src/rive_core/animation/interpolator.dart: -------------------------------------------------------------------------------- 1 | abstract class Interpolator { 2 | int get id; 3 | 4 | /// Convert a linear interpolation factor to an eased one. Returns a factor 5 | double transform(double f); 6 | 7 | /// Convert a linear interpolation factor to an eased one for from->to values. 8 | /// Returns a value instead of a factor. 9 | double transformValue(double from, double to, double f); 10 | 11 | bool equalParameters(Interpolator other); 12 | } 13 | -------------------------------------------------------------------------------- /lib/src/rive_core/animation/keyframe_bool.dart: -------------------------------------------------------------------------------- 1 | import 'package:rive/src/core/core.dart'; 2 | import 'package:rive/src/generated/animation/keyframe_bool_base.dart'; 3 | export 'package:rive/src/generated/animation/keyframe_bool_base.dart'; 4 | 5 | /// KeyFrame for animating bool properties. 6 | class KeyFrameBool extends KeyFrameBoolBase { 7 | @override 8 | bool get canInterpolate => false; 9 | 10 | @override 11 | void apply(Core object, int propertyKey, double mix) { 12 | RiveCoreContext.setBool(object, propertyKey, value); 13 | } 14 | 15 | @override 16 | void applyInterpolation(Core object, int propertyKey, 17 | double currentTime, KeyFrameBool nextFrame, double mix) { 18 | RiveCoreContext.setBool(object, propertyKey, value); 19 | } 20 | 21 | @override 22 | void valueChanged(bool from, bool to) {} 23 | } 24 | -------------------------------------------------------------------------------- /lib/src/rive_core/animation/keyframe_callback.dart: -------------------------------------------------------------------------------- 1 | import 'package:rive/src/core/core.dart'; 2 | import 'package:rive/src/generated/animation/keyframe_callback_base.dart'; 3 | import 'package:rive/src/rive_core/animation/keyframe.dart'; 4 | 5 | export 'package:rive/src/generated/animation/keyframe_callback_base.dart'; 6 | 7 | class KeyFrameCallback extends KeyFrameCallbackBase { 8 | @override 9 | void apply(Core object, int propertyKey, double mix) {} 10 | 11 | @override 12 | void applyInterpolation(Core object, int propertyKey, 13 | double seconds, covariant KeyFrame nextFrame, double mix) {} 14 | } 15 | -------------------------------------------------------------------------------- /lib/src/rive_core/animation/keyframe_id.dart: -------------------------------------------------------------------------------- 1 | import 'package:rive/src/core/core.dart'; 2 | import 'package:rive/src/generated/animation/keyframe_id_base.dart'; 3 | 4 | export 'package:rive/src/generated/animation/keyframe_id_base.dart'; 5 | 6 | class KeyFrameId extends KeyFrameIdBase { 7 | @override 8 | bool get canInterpolate => false; 9 | 10 | @override 11 | void apply(Core object, int propertyKey, double mix) { 12 | RiveCoreContext.setUint(object, propertyKey, value); 13 | } 14 | 15 | @override 16 | void applyInterpolation(Core object, int propertyKey, 17 | double currentTime, KeyFrameId nextFrame, double mix) { 18 | RiveCoreContext.setUint(object, propertyKey, value); 19 | } 20 | 21 | @override 22 | void valueChanged(int from, int to) {} 23 | } 24 | -------------------------------------------------------------------------------- /lib/src/rive_core/animation/keyframe_interpolation.dart: -------------------------------------------------------------------------------- 1 | /// The type of interpolation used for a keyframe. 2 | enum KeyFrameInterpolation { 3 | /// Hold the incoming value until the next keyframe is reached. 4 | hold, 5 | 6 | /// Linearly interpolate from the incoming to the outgoing value. 7 | linear, 8 | 9 | /// Cubicly interpolate from incoming to outgoing value based on the 10 | /// [CubicInterpolator]'s parameters. 11 | cubic, 12 | 13 | /// Cubicly interpolate from incoming to outgoing value based on the 14 | /// [CubicInterpolator]'s parameters. 15 | cubicValue, 16 | 17 | /// Elastic easing. 18 | elastic, 19 | } 20 | 21 | extension KeyFrameInterpolationExtension on KeyFrameInterpolation { 22 | /// Should this type use the interpolation value field beneath the 23 | /// curve preview 24 | bool get usesValuesField => [ 25 | KeyFrameInterpolation.hold, 26 | KeyFrameInterpolation.linear, 27 | KeyFrameInterpolation.cubic, 28 | ].contains(this); 29 | } 30 | -------------------------------------------------------------------------------- /lib/src/rive_core/animation/keyframe_interpolator.dart: -------------------------------------------------------------------------------- 1 | import 'package:rive/src/core/core.dart'; 2 | import 'package:rive/src/generated/animation/keyframe_interpolator_base.dart'; 3 | import 'package:rive/src/rive_core/animation/interpolator.dart'; 4 | import 'package:rive/src/rive_core/artboard.dart'; 5 | 6 | export 'package:rive/src/generated/animation/keyframe_interpolator_base.dart'; 7 | 8 | abstract class KeyFrameInterpolator extends KeyFrameInterpolatorBase 9 | implements Interpolator { 10 | @override 11 | void onAdded() => updateInterpolator(); 12 | 13 | @protected 14 | void updateInterpolator() {} 15 | 16 | @override 17 | bool import(ImportStack stack) { 18 | var artboardHelper = stack.latest(ArtboardBase.typeKey); 19 | if (artboardHelper == null) { 20 | return false; 21 | } 22 | artboardHelper.addComponent(this); 23 | 24 | return super.import(stack); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /lib/src/rive_core/animation/keyframe_string.dart: -------------------------------------------------------------------------------- 1 | import 'package:rive/src/core/core.dart'; 2 | import 'package:rive/src/generated/animation/keyframe_string_base.dart'; 3 | 4 | export 'package:rive/src/generated/animation/keyframe_id_base.dart'; 5 | 6 | class KeyFrameString extends KeyFrameStringBase { 7 | @override 8 | bool get canInterpolate => false; 9 | 10 | @override 11 | void apply(Core object, int propertyKey, double mix) { 12 | RiveCoreContext.setString(object, propertyKey, value); 13 | } 14 | 15 | @override 16 | void applyInterpolation(Core object, int propertyKey, 17 | double currentTime, KeyFrameString nextFrame, double mix) { 18 | RiveCoreContext.setString(object, propertyKey, value); 19 | } 20 | 21 | @override 22 | void valueChanged(String from, String to) {} 23 | } 24 | -------------------------------------------------------------------------------- /lib/src/rive_core/animation/keyframe_uint.dart: -------------------------------------------------------------------------------- 1 | import 'package:rive/src/core/core.dart'; 2 | import 'package:rive/src/generated/animation/keyframe_uint_base.dart'; 3 | export 'package:rive/src/generated/animation/keyframe_uint_base.dart'; 4 | 5 | /// KeyFrame for animating uint properties. 6 | class KeyFrameUint extends KeyFrameUintBase { 7 | @override 8 | bool get canInterpolate => false; 9 | 10 | @override 11 | void apply(Core object, int propertyKey, double mix) { 12 | RiveCoreContext.setUint(object, propertyKey, value); 13 | } 14 | 15 | @override 16 | void applyInterpolation(Core object, int propertyKey, 17 | double currentTime, KeyFrameUint nextFrame, double mix) { 18 | RiveCoreContext.setUint(object, propertyKey, value); 19 | } 20 | 21 | @override 22 | void valueChanged(int from, int to) {} 23 | } 24 | -------------------------------------------------------------------------------- /lib/src/rive_core/animation/listener_fire_event.dart: -------------------------------------------------------------------------------- 1 | library rive_core; 2 | 3 | import 'package:rive/src/generated/animation/listener_fire_event_base.dart'; 4 | import 'package:rive/src/rive_core/event.dart'; 5 | import 'package:rive/src/rive_core/state_machine_controller.dart'; 6 | import 'package:rive_common/math.dart'; 7 | 8 | export 'package:rive/src/generated/animation/listener_fire_event_base.dart'; 9 | 10 | class ListenerFireEvent extends ListenerFireEventBase { 11 | @override 12 | void eventIdChanged(int from, int to) {} 13 | 14 | @override 15 | void perform(StateMachineController controller, Vec2D position, 16 | Vec2D previousPosition) { 17 | Event? event = controller.artboard?.context.resolve(eventId); 18 | if (event != null) { 19 | controller.reportEvent(event); 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /lib/src/rive_core/animation/listener_number_change.dart: -------------------------------------------------------------------------------- 1 | import 'package:rive/src/generated/animation/listener_number_change_base.dart'; 2 | import 'package:rive/src/rive_core/animation/nested_number.dart'; 3 | import 'package:rive/src/rive_core/state_machine_controller.dart'; 4 | import 'package:rive_common/math.dart'; 5 | 6 | export 'package:rive/src/generated/animation/listener_number_change_base.dart'; 7 | 8 | class ListenerNumberChange extends ListenerNumberChangeBase { 9 | @override 10 | void valueChanged(double from, double to) {} 11 | 12 | @override 13 | void perform(StateMachineController controller, Vec2D position, 14 | Vec2D previousPosition) { 15 | var nestedInput = nestedInputForController(controller); 16 | if (nestedInput != null && nestedInput is NestedNumber) { 17 | nestedInput.nestedValue = value; 18 | } else { 19 | controller.setInputValue(inputId, value); 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /lib/src/rive_core/animation/listener_viewmodel_change.dart: -------------------------------------------------------------------------------- 1 | import 'package:rive/src/generated/animation/listener_viewmodel_change_base.dart'; 2 | import 'package:rive/src/rive_core/state_machine_controller.dart'; 3 | import 'package:rive_common/math.dart'; 4 | 5 | export 'package:rive/src/generated/animation/listener_viewmodel_change_base.dart'; 6 | 7 | class ListenerViewModelChange extends ListenerViewModelChangeBase { 8 | @override 9 | void perform(StateMachineController controller, Vec2D position, 10 | Vec2D previousPosition) {} 11 | } 12 | -------------------------------------------------------------------------------- /lib/src/rive_core/animation/loop.dart: -------------------------------------------------------------------------------- 1 | /// Loop options for linear animations. 2 | enum Loop { 3 | /// Play until the duration or end of work area of the animation. 4 | oneShot, 5 | 6 | /// Play until the duration or end of work area of the animation and then go 7 | /// back to the start (0 seconds). 8 | loop, 9 | 10 | /// Play to the end of the duration/work area and then play back. 11 | pingPong, 12 | } 13 | -------------------------------------------------------------------------------- /lib/src/rive_core/animation/nested_bool.dart: -------------------------------------------------------------------------------- 1 | import 'package:rive/src/generated/animation/nested_bool_base.dart'; 2 | export 'package:rive/src/generated/animation/nested_bool_base.dart'; 3 | 4 | class NestedBool extends NestedBoolBase { 5 | @override 6 | void nestedValueChanged(bool from, bool to) => updateValue(); 7 | 8 | @override 9 | void updateValue() => nestedStateMachine?.setInputValue(inputId, nestedValue); 10 | 11 | @override 12 | set nestedValue(bool value) { 13 | super.nestedValue = value; 14 | 15 | updateValue(); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /lib/src/rive_core/animation/nested_number.dart: -------------------------------------------------------------------------------- 1 | import 'package:rive/src/generated/animation/nested_number_base.dart'; 2 | export 'package:rive/src/generated/animation/nested_number_base.dart'; 3 | 4 | class NestedNumber extends NestedNumberBase { 5 | @override 6 | void nestedValueChanged(double from, double to) => updateValue(); 7 | 8 | @override 9 | void updateValue() => nestedStateMachine?.setInputValue(inputId, nestedValue); 10 | 11 | @override 12 | set nestedValue(double value) { 13 | super.nestedValue = value; 14 | 15 | updateValue(); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /lib/src/rive_core/animation/nested_remap_animation.dart: -------------------------------------------------------------------------------- 1 | import 'package:rive/src/generated/animation/nested_remap_animation_base.dart'; 2 | import 'package:rive/src/rive_core/animation/nested_linear_animation.dart'; 3 | 4 | export 'package:rive/src/generated/animation/nested_remap_animation_base.dart'; 5 | 6 | class NestedRemapAnimation extends NestedRemapAnimationBase { 7 | @override 8 | void timeChanged(double from, double to) => syncTime(); 9 | 10 | void syncTime() { 11 | if (linearAnimationInstance != null) { 12 | linearAnimationInstance! 13 | .goto(linearAnimationInstance!.durationSeconds * time); 14 | } 15 | } 16 | 17 | @override 18 | void linearAnimationInstanceChanged(NestedLinearAnimationInstance? from, 19 | NestedLinearAnimationInstance? to) => 20 | syncTime(); 21 | 22 | @override 23 | bool get isEnabled => true; 24 | } 25 | -------------------------------------------------------------------------------- /lib/src/rive_core/animation/nested_trigger.dart: -------------------------------------------------------------------------------- 1 | import 'package:rive/src/core/core.dart'; 2 | import 'package:rive/src/generated/animation/nested_trigger_base.dart'; 3 | import 'package:rive/src/rive_core/notifier.dart'; 4 | 5 | export 'package:rive/src/generated/animation/nested_trigger_base.dart'; 6 | 7 | class NestedTrigger extends NestedTriggerBase { 8 | final Notifier firedTrigger = Notifier(); 9 | 10 | @override 11 | void fire(CallbackData data) { 12 | // Need to pass the CallbackData? 13 | firedTrigger.notify(); 14 | 15 | updateValue(); 16 | } 17 | 18 | @override 19 | void updateValue() => nestedStateMachine?.setInputValue(inputId, true); 20 | } 21 | -------------------------------------------------------------------------------- /lib/src/rive_core/animation/state_machine_bool.dart: -------------------------------------------------------------------------------- 1 | import 'package:rive/src/generated/animation/state_machine_bool_base.dart'; 2 | export 'package:rive/src/generated/animation/state_machine_bool_base.dart'; 3 | 4 | class StateMachineBool extends StateMachineBoolBase { 5 | @override 6 | void valueChanged(bool from, bool to) {} 7 | 8 | @override 9 | bool isValidType() => T == bool; 10 | } 11 | -------------------------------------------------------------------------------- /lib/src/rive_core/animation/state_machine_input.dart: -------------------------------------------------------------------------------- 1 | // ignore_for_file: use_setters_to_change_properties 2 | 3 | import 'dart:collection'; 4 | 5 | import 'package:rive/src/generated/animation/state_machine_input_base.dart'; 6 | import 'package:rive/src/rive_core/animation/state_machine.dart'; 7 | import 'package:rive/src/rive_core/animation/state_machine_component.dart'; 8 | 9 | export 'package:rive/src/generated/animation/state_machine_input_base.dart'; 10 | 11 | abstract class StateMachineInput extends StateMachineInputBase { 12 | static final StateMachineInput unknown = _StateMachineUnknownInput(); 13 | 14 | @override 15 | ListBase machineComponentList(StateMachine machine) => 16 | machine.inputs; 17 | 18 | bool isValidType() => false; 19 | } 20 | 21 | class _StateMachineUnknownInput extends StateMachineInput {} 22 | -------------------------------------------------------------------------------- /lib/src/rive_core/animation/state_machine_number.dart: -------------------------------------------------------------------------------- 1 | import 'package:rive/src/generated/animation/state_machine_number_base.dart'; 2 | export 'package:rive/src/generated/animation/state_machine_number_base.dart'; 3 | 4 | class StateMachineNumber extends StateMachineNumberBase { 5 | @override 6 | void valueChanged(double from, double to) {} 7 | } 8 | -------------------------------------------------------------------------------- /lib/src/rive_core/animation/state_machine_trigger.dart: -------------------------------------------------------------------------------- 1 | import 'package:rive/src/generated/animation/state_machine_trigger_base.dart'; 2 | export 'package:rive/src/generated/animation/state_machine_trigger_base.dart'; 3 | 4 | class StateMachineTrigger extends StateMachineTriggerBase { 5 | void fire() {} 6 | 7 | @override 8 | bool isValidType() => T == bool; 9 | } 10 | -------------------------------------------------------------------------------- /lib/src/rive_core/animation/transition_artboard_condition.dart: -------------------------------------------------------------------------------- 1 | import 'package:rive/src/generated/animation/transition_artboard_condition_base.dart'; 2 | 3 | export 'package:rive/src/generated/animation/transition_artboard_condition_base.dart'; 4 | 5 | class TransitionArtboardCondition extends TransitionArtboardConditionBase {} 6 | -------------------------------------------------------------------------------- /lib/src/rive_core/animation/transition_condition.dart: -------------------------------------------------------------------------------- 1 | import 'package:rive/src/core/core.dart'; 2 | import 'package:rive/src/generated/animation/transition_condition_base.dart'; 3 | import 'package:rive/src/rive_core/animation/state_transition.dart'; 4 | 5 | export 'package:rive/src/generated/animation/transition_condition_base.dart'; 6 | 7 | enum TransitionConditionOp { 8 | equal, 9 | notEqual, 10 | lessThanOrEqual, 11 | greaterThanOrEqual, 12 | lessThan, 13 | greaterThan, 14 | } 15 | 16 | abstract class TransitionCondition extends TransitionConditionBase { 17 | @override 18 | void onAdded() {} 19 | 20 | @override 21 | void onAddedDirty() {} 22 | 23 | @override 24 | bool import(ImportStack importStack) { 25 | var importer = importStack 26 | .latest(StateTransitionBase.typeKey); 27 | if (importer == null) { 28 | return false; 29 | } 30 | importer.addCondition(this); 31 | 32 | return super.import(importStack); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /lib/src/rive_core/animation/transition_property_comparator.dart: -------------------------------------------------------------------------------- 1 | import 'package:rive/src/generated/animation/transition_property_comparator_base.dart'; 2 | 3 | export 'package:rive/src/generated/animation/transition_property_comparator_base.dart'; 4 | 5 | abstract class TransitionPropertyComparator 6 | extends TransitionPropertyComparatorBase {} 7 | -------------------------------------------------------------------------------- /lib/src/rive_core/animation/transition_property_viewmodel_comparator.dart: -------------------------------------------------------------------------------- 1 | import 'package:rive/src/generated/animation/transition_property_viewmodel_comparator_base.dart'; 2 | import 'package:rive/src/rive_core/animation/transition_comparator.dart'; 3 | import 'package:rive/src/rive_core/animation/transition_condition.dart'; 4 | 5 | export 'package:rive/src/generated/animation/transition_property_viewmodel_comparator_base.dart'; 6 | 7 | class TransitionPropertyViewModelComparator 8 | extends TransitionPropertyViewModelComparatorBase { 9 | @override 10 | void onAdded() {} 11 | 12 | @override 13 | void onAddedDirty() {} 14 | 15 | @override 16 | bool compare( 17 | TransitionComparator comparand, TransitionConditionOp operation) { 18 | return false; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /lib/src/rive_core/animation/transition_trigger_condition.dart: -------------------------------------------------------------------------------- 1 | import 'dart:collection'; 2 | 3 | import 'package:rive/src/generated/animation/transition_trigger_condition_base.dart'; 4 | import 'package:rive/src/rive_core/animation/state_machine_trigger.dart'; 5 | 6 | export 'package:rive/src/generated/animation/transition_trigger_condition_base.dart'; 7 | 8 | class TransitionTriggerCondition extends TransitionTriggerConditionBase { 9 | @override 10 | bool validate() => super.validate() && (input is StateMachineTrigger); 11 | 12 | @override 13 | bool evaluate(HashMap values) { 14 | if (input is! StateMachineTrigger) { 15 | return true; 16 | } 17 | dynamic providedValue = values[input.id]; 18 | if (providedValue is bool && providedValue) { 19 | return true; 20 | } 21 | return false; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /lib/src/rive_core/animation/transition_value_boolean_comparator.dart: -------------------------------------------------------------------------------- 1 | import 'package:rive/src/generated/animation/transition_value_boolean_comparator_base.dart'; 2 | import 'package:rive/src/rive_core/animation/transition_comparator.dart'; 3 | import 'package:rive/src/rive_core/animation/transition_condition.dart'; 4 | 5 | export 'package:rive/src/generated/animation/transition_value_boolean_comparator_base.dart'; 6 | 7 | class TransitionValueBooleanComparator 8 | extends TransitionValueBooleanComparatorBase { 9 | @override 10 | void valueChanged(bool from, bool to) {} 11 | 12 | @override 13 | void onAdded() {} 14 | 15 | @override 16 | void onAddedDirty() {} 17 | 18 | @override 19 | bool compare( 20 | TransitionComparator comparand, TransitionConditionOp operation) { 21 | return false; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /lib/src/rive_core/animation/transition_value_color_comparator.dart: -------------------------------------------------------------------------------- 1 | import 'package:rive/src/generated/animation/transition_value_color_comparator_base.dart'; 2 | import 'package:rive/src/rive_core/animation/transition_comparator.dart'; 3 | import 'package:rive/src/rive_core/animation/transition_condition.dart'; 4 | 5 | export 'package:rive/src/generated/animation/transition_value_color_comparator_base.dart'; 6 | 7 | class TransitionValueColorComparator 8 | extends TransitionValueColorComparatorBase { 9 | @override 10 | void valueChanged(int from, int to) {} 11 | 12 | @override 13 | void onAdded() {} 14 | 15 | @override 16 | void onAddedDirty() {} 17 | 18 | @override 19 | bool compare( 20 | TransitionComparator comparand, TransitionConditionOp operation) { 21 | return false; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /lib/src/rive_core/animation/transition_value_comparator.dart: -------------------------------------------------------------------------------- 1 | import 'package:rive/src/generated/animation/transition_value_comparator_base.dart'; 2 | 3 | export 'package:rive/src/generated/animation/transition_value_comparator_base.dart'; 4 | 5 | abstract class TransitionValueComparator 6 | extends TransitionValueComparatorBase {} 7 | -------------------------------------------------------------------------------- /lib/src/rive_core/animation/transition_value_condition.dart: -------------------------------------------------------------------------------- 1 | import 'package:rive/src/generated/animation/transition_value_condition_base.dart'; 2 | import 'package:rive/src/rive_core/animation/transition_condition.dart'; 3 | 4 | export 'package:rive/src/generated/animation/transition_value_condition_base.dart'; 5 | 6 | abstract class TransitionValueCondition extends TransitionValueConditionBase { 7 | TransitionConditionOp get op => TransitionConditionOp.values[opValue]; 8 | 9 | @override 10 | void opValueChanged(int from, int to) {} 11 | } 12 | -------------------------------------------------------------------------------- /lib/src/rive_core/animation/transition_value_enum_comparator.dart: -------------------------------------------------------------------------------- 1 | import 'package:rive/src/generated/animation/transition_value_enum_comparator_base.dart'; 2 | import 'package:rive/src/rive_core/animation/transition_comparator.dart'; 3 | import 'package:rive/src/rive_core/animation/transition_condition.dart'; 4 | 5 | export 'package:rive/src/generated/animation/transition_value_enum_comparator_base.dart'; 6 | 7 | class TransitionValueEnumComparator extends TransitionValueEnumComparatorBase { 8 | @override 9 | void valueChanged(int from, int to) {} 10 | 11 | @override 12 | void onAdded() {} 13 | 14 | @override 15 | void onAddedDirty() {} 16 | 17 | @override 18 | bool compare( 19 | TransitionComparator comparand, TransitionConditionOp operation) { 20 | return false; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /lib/src/rive_core/animation/transition_value_number_comparator.dart: -------------------------------------------------------------------------------- 1 | import 'package:rive/src/generated/animation/transition_value_number_comparator_base.dart'; 2 | import 'package:rive/src/rive_core/animation/transition_comparator.dart'; 3 | import 'package:rive/src/rive_core/animation/transition_condition.dart'; 4 | 5 | export 'package:rive/src/generated/animation/transition_value_number_comparator_base.dart'; 6 | 7 | class TransitionValueNumberComparator 8 | extends TransitionValueNumberComparatorBase { 9 | @override 10 | void valueChanged(double from, double to) {} 11 | 12 | @override 13 | void onAdded() {} 14 | 15 | @override 16 | void onAddedDirty() {} 17 | 18 | @override 19 | bool compare( 20 | TransitionComparator comparand, TransitionConditionOp operation) { 21 | return false; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /lib/src/rive_core/animation/transition_value_string_comparator.dart: -------------------------------------------------------------------------------- 1 | import 'package:rive/src/generated/animation/transition_value_string_comparator_base.dart'; 2 | import 'package:rive/src/rive_core/animation/transition_comparator.dart'; 3 | import 'package:rive/src/rive_core/animation/transition_condition.dart'; 4 | 5 | export 'package:rive/src/generated/animation/transition_value_string_comparator_base.dart'; 6 | 7 | class TransitionValueStringComparator 8 | extends TransitionValueStringComparatorBase { 9 | @override 10 | void valueChanged(String from, String to) {} 11 | 12 | @override 13 | void onAdded() {} 14 | 15 | @override 16 | void onAddedDirty() {} 17 | 18 | @override 19 | bool compare( 20 | TransitionComparator comparand, TransitionConditionOp operation) { 21 | return false; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /lib/src/rive_core/assets/asset.dart: -------------------------------------------------------------------------------- 1 | import 'package:rive/src/generated/assets/asset_base.dart'; 2 | 3 | export 'package:rive/src/generated/assets/asset_base.dart'; 4 | 5 | abstract class Asset extends AssetBase { 6 | @override 7 | void nameChanged(String from, String to) {} 8 | 9 | @override 10 | void onAdded() {} 11 | 12 | @override 13 | void onAddedDirty() {} 14 | } 15 | -------------------------------------------------------------------------------- /lib/src/rive_core/assets/drawable_asset.dart: -------------------------------------------------------------------------------- 1 | import 'package:rive/src/generated/assets/drawable_asset_base.dart'; 2 | 3 | export 'package:rive/src/generated/assets/drawable_asset_base.dart'; 4 | 5 | abstract class DrawableAsset extends DrawableAssetBase { 6 | @override 7 | void heightChanged(double from, double to) {} 8 | 9 | @override 10 | void widthChanged(double from, double to) {} 11 | } 12 | -------------------------------------------------------------------------------- /lib/src/rive_core/assets/export_audio.dart: -------------------------------------------------------------------------------- 1 | import 'package:rive/src/generated/assets/export_audio_base.dart'; 2 | export 'package:rive/src/generated/assets/export_audio_base.dart'; 3 | 4 | abstract class ExportAudio extends ExportAudioBase { 5 | @override 6 | void volumeChanged(double from, double to) {} 7 | } 8 | -------------------------------------------------------------------------------- /lib/src/rive_core/assets/folder.dart: -------------------------------------------------------------------------------- 1 | import 'package:rive/src/generated/assets/folder_base.dart'; 2 | export 'package:rive/src/generated/assets/folder_base.dart'; 3 | 4 | class Folder extends FolderBase {} 5 | -------------------------------------------------------------------------------- /lib/src/rive_core/backboard.dart: -------------------------------------------------------------------------------- 1 | import 'package:rive/src/core/core.dart'; 2 | import 'package:rive/src/generated/backboard_base.dart'; 3 | import 'package:rive/src/rive_core/assets/asset.dart'; 4 | 5 | export 'package:rive/src/generated/backboard_base.dart'; 6 | 7 | class Backboard extends BackboardBase { 8 | static final Backboard unknown = Backboard(); 9 | 10 | final AssetList _assets = AssetList(); 11 | AssetList get assets => _assets; 12 | 13 | bool internalAddAsset(Asset asset) { 14 | if (_assets.contains(asset)) { 15 | return false; 16 | } 17 | _assets.add(asset); 18 | 19 | return true; 20 | } 21 | 22 | bool internalRemoveAsset(Asset asset) { 23 | bool removed = _assets.remove(asset); 24 | 25 | return removed; 26 | } 27 | 28 | @override 29 | void onAdded() {} 30 | 31 | @override 32 | void onAddedDirty() {} 33 | } 34 | -------------------------------------------------------------------------------- /lib/src/rive_core/bones/cubic_weight.dart: -------------------------------------------------------------------------------- 1 | import 'package:rive/src/generated/bones/cubic_weight_base.dart'; 2 | import 'package:rive_common/math.dart'; 3 | 4 | export 'package:rive/src/generated/bones/cubic_weight_base.dart'; 5 | 6 | class CubicWeight extends CubicWeightBase { 7 | final Vec2D inTranslation = Vec2D(); 8 | final Vec2D outTranslation = Vec2D(); 9 | 10 | @override 11 | void inIndicesChanged(int from, int to) {} 12 | 13 | @override 14 | void inValuesChanged(int from, int to) {} 15 | 16 | @override 17 | void outIndicesChanged(int from, int to) {} 18 | 19 | @override 20 | void outValuesChanged(int from, int to) {} 21 | } 22 | -------------------------------------------------------------------------------- /lib/src/rive_core/bones/root_bone.dart: -------------------------------------------------------------------------------- 1 | import 'package:rive/src/generated/bones/root_bone_base.dart'; 2 | export 'package:rive/src/generated/bones/root_bone_base.dart'; 3 | 4 | class RootBone extends RootBoneBase { 5 | @override 6 | void xChanged(double from, double to) { 7 | markTransformDirty(); 8 | } 9 | 10 | @override 11 | void yChanged(double from, double to) { 12 | markTransformDirty(); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /lib/src/rive_core/bones/skeletal_component.dart: -------------------------------------------------------------------------------- 1 | import 'package:rive/src/generated/bones/skeletal_component_base.dart'; 2 | export 'package:rive/src/generated/bones/skeletal_component_base.dart'; 3 | 4 | abstract class SkeletalComponent extends SkeletalComponentBase {} 5 | -------------------------------------------------------------------------------- /lib/src/rive_core/bounds_provider.dart: -------------------------------------------------------------------------------- 1 | import 'dart:ui'; 2 | 3 | import 'package:rive_common/math.dart'; 4 | 5 | // ignore: one_member_abstracts 6 | abstract class BoundsProvider { 7 | AABB computeBounds(Mat2D toParent); 8 | } 9 | 10 | abstract class Sizable { 11 | Size computeIntrinsicSize(Size min, Size max); 12 | void controlSize(Size size); 13 | } 14 | -------------------------------------------------------------------------------- /lib/src/rive_core/component_flags.dart: -------------------------------------------------------------------------------- 1 | class ComponentFlags { 2 | /// Whether the component should be drawn (at runtime this only used by 3 | /// drawables and paths). 4 | static const int hidden = 1 << 0; 5 | 6 | /// Whether the component was locked for editing in the editor. 7 | static const int locked = 1 << 1; 8 | 9 | /// Whether this Component is disconnected from the hierarchy meaning it won't 10 | /// receive any update cycles nor will any drawables draw. 11 | static const int disconnected = 1 << 2; 12 | 13 | /// Whether this Component lets hit events pass through to components behind 14 | /// it (used by shapes at runtine) 15 | static const int opaque = 1 << 3; 16 | } 17 | -------------------------------------------------------------------------------- /lib/src/rive_core/constraints/transform_component_constraint_y.dart: -------------------------------------------------------------------------------- 1 | import 'package:rive/src/generated/constraints/transform_component_constraint_y_base.dart'; 2 | export 'package:rive/src/generated/constraints/transform_component_constraint_y_base.dart'; 3 | 4 | abstract class TransformComponentConstraintY 5 | extends TransformComponentConstraintYBase { 6 | @override 7 | void minValueYChanged(double from, double to) => markConstraintDirty(); 8 | 9 | @override 10 | void maxValueYChanged(double from, double to) => markConstraintDirty(); 11 | 12 | @override 13 | void copyFactorYChanged(double from, double to) => markConstraintDirty(); 14 | 15 | @override 16 | void doesCopyYChanged(bool from, bool to) => markConstraintDirty(); 17 | 18 | @override 19 | void maxYChanged(bool from, bool to) => markConstraintDirty(); 20 | 21 | @override 22 | void minYChanged(bool from, bool to) => markConstraintDirty(); 23 | } 24 | -------------------------------------------------------------------------------- /lib/src/rive_core/custom_property.dart: -------------------------------------------------------------------------------- 1 | import 'package:rive/src/generated/custom_property_base.dart'; 2 | export 'package:rive/src/generated/custom_property_base.dart'; 3 | 4 | /// A custom property value stored in the hierarchy with a boolean value. 5 | class CustomProperty extends CustomPropertyBase { 6 | @override 7 | void update(int dirt) {} 8 | } 9 | -------------------------------------------------------------------------------- /lib/src/rive_core/custom_property_boolean.dart: -------------------------------------------------------------------------------- 1 | import 'package:rive/src/generated/custom_property_boolean_base.dart'; 2 | export 'package:rive/src/generated/custom_property_boolean_base.dart'; 3 | 4 | /// A custom property value stored in the hierarchy with a boolean value. 5 | class CustomPropertyBoolean extends CustomPropertyBooleanBase { 6 | @override 7 | void propertyValueChanged(bool from, bool to) {} 8 | } 9 | -------------------------------------------------------------------------------- /lib/src/rive_core/custom_property_number.dart: -------------------------------------------------------------------------------- 1 | import 'package:rive/src/generated/custom_property_number_base.dart'; 2 | export 'package:rive/src/generated/custom_property_number_base.dart'; 3 | 4 | /// A custom property value stored in the hierarchy with a numeric value. 5 | class CustomPropertyNumber extends CustomPropertyNumberBase { 6 | @override 7 | void propertyValueChanged(double from, double to) {} 8 | } 9 | -------------------------------------------------------------------------------- /lib/src/rive_core/custom_property_string.dart: -------------------------------------------------------------------------------- 1 | import 'package:rive/src/generated/custom_property_string_base.dart'; 2 | export 'package:rive/src/generated/custom_property_string_base.dart'; 3 | 4 | /// A custom property value stored in the hierarchy with a string value. 5 | class CustomPropertyString extends CustomPropertyStringBase { 6 | @override 7 | void propertyValueChanged(String from, String to) {} 8 | } 9 | -------------------------------------------------------------------------------- /lib/src/rive_core/data_bind/bindable_property.dart: -------------------------------------------------------------------------------- 1 | import 'package:rive/src/generated/data_bind/bindable_property_base.dart'; 2 | 3 | export 'package:rive/src/generated/data_bind/bindable_property_base.dart'; 4 | 5 | enum PropertyType { 6 | number, 7 | string, 8 | boolean, 9 | enumerator, 10 | color, 11 | } 12 | 13 | class BindableProperty extends BindablePropertyBase { 14 | @override 15 | void onAddedDirty() {} 16 | 17 | @override 18 | void onAdded() {} 19 | } 20 | -------------------------------------------------------------------------------- /lib/src/rive_core/data_bind/bindable_property_boolean.dart: -------------------------------------------------------------------------------- 1 | import 'package:rive/src/generated/data_bind/bindable_property_boolean_base.dart'; 2 | 3 | export 'package:rive/src/generated/data_bind/bindable_property_boolean_base.dart'; 4 | 5 | class BindablePropertyBoolean extends BindablePropertyBooleanBase { 6 | @override 7 | void propertyValueChanged(bool from, bool to) {} 8 | } 9 | -------------------------------------------------------------------------------- /lib/src/rive_core/data_bind/bindable_property_color.dart: -------------------------------------------------------------------------------- 1 | import 'package:rive/src/generated/data_bind/bindable_property_color_base.dart'; 2 | 3 | export 'package:rive/src/generated/data_bind/bindable_property_color_base.dart'; 4 | 5 | class BindablePropertyColor extends BindablePropertyColorBase { 6 | @override 7 | void propertyValueChanged(int from, int to) {} 8 | } 9 | -------------------------------------------------------------------------------- /lib/src/rive_core/data_bind/bindable_property_enum.dart: -------------------------------------------------------------------------------- 1 | import 'package:rive/src/generated/data_bind/bindable_property_enum_base.dart'; 2 | 3 | export 'package:rive/src/generated/data_bind/bindable_property_enum_base.dart'; 4 | 5 | class BindablePropertyEnum extends BindablePropertyEnumBase { 6 | @override 7 | void propertyValueChanged(int from, int to) {} 8 | } 9 | -------------------------------------------------------------------------------- /lib/src/rive_core/data_bind/bindable_property_number.dart: -------------------------------------------------------------------------------- 1 | import 'package:rive/src/generated/data_bind/bindable_property_number_base.dart'; 2 | 3 | export 'package:rive/src/generated/data_bind/bindable_property_number_base.dart'; 4 | 5 | class BindablePropertyNumber extends BindablePropertyNumberBase { 6 | @override 7 | void propertyValueChanged(double from, double to) {} 8 | } 9 | -------------------------------------------------------------------------------- /lib/src/rive_core/data_bind/bindable_property_string.dart: -------------------------------------------------------------------------------- 1 | import 'package:rive/src/generated/data_bind/bindable_property_string_base.dart'; 2 | 3 | export 'package:rive/src/generated/data_bind/bindable_property_string_base.dart'; 4 | 5 | class BindablePropertyString extends BindablePropertyStringBase { 6 | @override 7 | void propertyValueChanged(String from, String to) {} 8 | } 9 | -------------------------------------------------------------------------------- /lib/src/rive_core/data_bind/context/context_value.dart: -------------------------------------------------------------------------------- 1 | import 'package:rive/src/core/core.dart'; 2 | import 'package:rive/src/rive_core/viewmodel/viewmodel_instance_value.dart'; 3 | 4 | abstract class ContextValue { 5 | ViewModelInstanceValue? source; 6 | ContextValue(this.source); 7 | void apply(Core core, int propertyKey); 8 | void applyToSource(Core core, int propertyKey); 9 | void update(Core core) {} 10 | } 11 | -------------------------------------------------------------------------------- /lib/src/rive_core/data_bind/context/context_value_enum.dart: -------------------------------------------------------------------------------- 1 | import 'package:rive/src/core/core.dart'; 2 | import 'package:rive/src/rive_core/data_bind/context/context_value.dart'; 3 | import 'package:rive/src/rive_core/viewmodel/viewmodel_instance_value.dart'; 4 | 5 | class ContextValueEnum extends ContextValue { 6 | ContextValueEnum(ViewModelInstanceValue? source) : super(source); 7 | 8 | @override 9 | void apply(Core core, int propertyKey) { 10 | // TODO: @hernan implement 11 | } 12 | 13 | @override 14 | void applyToSource(Core core, int propertyKey) { 15 | // TODO: @hernan implement 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /lib/src/rive_core/data_bind/context/context_value_list.dart: -------------------------------------------------------------------------------- 1 | import 'package:rive/src/core/core.dart'; 2 | import 'package:rive/src/rive_core/data_bind/context/context_value.dart'; 3 | import 'package:rive/src/rive_core/viewmodel/viewmodel_instance_value.dart'; 4 | 5 | class ContextValueList extends ContextValue { 6 | ContextValueList(ViewModelInstanceValue? source) : super(source); 7 | 8 | @override 9 | void apply(Core core, int propertyKey) { 10 | // TODO: @hernan implement 11 | } 12 | 13 | @override 14 | void applyToSource(Core core, int propertyKey) { 15 | // TODO: @hernan implement 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /lib/src/rive_core/data_bind_flags.dart: -------------------------------------------------------------------------------- 1 | class DataBindFlags { 2 | /// Whether the main binding direction is to target (0) or to source (1) 3 | static const int direction = 1 << 0; 4 | 5 | /// Whether the binding direction is twoWay 6 | static const int twoWay = 1 << 1; 7 | 8 | /// Whether the binding happens only once 9 | static const int once = 1 << 2; 10 | 11 | static const int toTarget = 0; 12 | 13 | static const int toSource = 1 << 0; 14 | } 15 | -------------------------------------------------------------------------------- /lib/src/rive_core/dependency_helper.dart: -------------------------------------------------------------------------------- 1 | class DependencyHelper { 2 | Set dependents = {}; 3 | T? dependencyRoot; 4 | 5 | DependencyHelper(); 6 | 7 | bool addDependent(U value) { 8 | if (!dependents.contains(value)) { 9 | dependents.add(value); 10 | return true; 11 | } 12 | return false; 13 | } 14 | 15 | void addDirt(int dirt, {bool recurse = false}) { 16 | dependents 17 | .forEach((dependent) => dependent.addDirt(dirt, recurse: recurse)); 18 | } 19 | 20 | void onComponentDirty(U component) { 21 | dependencyRoot?.onComponentDirty(component); 22 | } 23 | 24 | void clear() { 25 | dependents.clear(); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /lib/src/rive_core/enum_helper.dart: -------------------------------------------------------------------------------- 1 | /// Helper for getting a valid enum at an index (or default to the first one). 2 | T enumAt(List values, int index) => 3 | index < values.length ? values[index] : values.first; 4 | -------------------------------------------------------------------------------- /lib/src/rive_core/layer_state_flags.dart: -------------------------------------------------------------------------------- 1 | class LayerStateFlags { 2 | /// Whether the state can randomize on exit. 3 | static const int random = 1 << 0; 4 | 5 | /// Whether the blend should include an instance to reset values on apply 6 | static const int reset = 1 << 1; 7 | } 8 | -------------------------------------------------------------------------------- /lib/src/rive_core/nested_animation.dart: -------------------------------------------------------------------------------- 1 | import 'package:rive/src/generated/nested_animation_base.dart'; 2 | import 'package:rive/src/rive_core/animation/animation.dart'; 3 | import 'package:rive/src/rive_core/nested_artboard.dart'; 4 | 5 | export 'package:rive/src/generated/nested_animation_base.dart'; 6 | 7 | abstract class NestedAnimation 8 | extends NestedAnimationBase { 9 | NestedArtboard? get nestedArtboard => 10 | parent is NestedArtboard ? parent as NestedArtboard : null; 11 | 12 | @override 13 | void animationIdChanged(int from, int to) {} 14 | 15 | bool get isEnabled; 16 | 17 | /// Returns true when the NestedAnimation needs to keep advancing. Returning 18 | /// false doesn't guarantee another advance won't be called, it just means 19 | /// that it's no longer necessary to call advance again as the reesults will 20 | /// be the same. 21 | bool advance(double elapsedSeconds, MountedArtboard mountedArtboard); 22 | 23 | @override 24 | void update(int dirt) {} 25 | } 26 | -------------------------------------------------------------------------------- /lib/src/rive_core/node.dart: -------------------------------------------------------------------------------- 1 | import 'package:rive/src/generated/node_base.dart'; 2 | import 'package:rive_common/math.dart'; 3 | 4 | export 'package:rive/src/generated/node_base.dart'; 5 | 6 | class _UnknownNode extends Node {} 7 | 8 | class Node extends NodeBase { 9 | static final Node unknown = _UnknownNode(); 10 | 11 | /// Sets the position of the Node 12 | set translation(Vec2D pos) { 13 | x = pos.x; 14 | y = pos.y; 15 | } 16 | 17 | @override 18 | void xChanged(double from, double to) { 19 | markTransformDirty(); 20 | } 21 | 22 | @override 23 | void yChanged(double from, double to) { 24 | markTransformDirty(); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /lib/src/rive_core/notifier.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/foundation.dart'; 2 | 3 | // Just a way to get around the protected notifyListeners so we can use trigger 4 | // multiple events from a single object. 5 | class Notifier extends ChangeNotifier { 6 | void notify() => notifyListeners(); 7 | } 8 | -------------------------------------------------------------------------------- /lib/src/rive_core/open_url_event.dart: -------------------------------------------------------------------------------- 1 | import 'package:rive/src/generated/open_url_event_base.dart'; 2 | import 'package:rive/src/rive_core/artboard.dart'; 3 | import 'package:rive/src/rive_core/open_url_target.dart'; 4 | 5 | export 'package:rive/src/generated/open_url_event_base.dart'; 6 | 7 | class OpenUrlEvent extends OpenUrlEventBase { 8 | @override 9 | void update(int dirt) {} 10 | 11 | @override 12 | void changeArtboard(Artboard? value) { 13 | artboard?.internalRemoveEvent(this); 14 | super.changeArtboard(value); 15 | artboard?.internalAddEvent(this); 16 | } 17 | 18 | @override 19 | void targetValueChanged(int from, int to) {} 20 | 21 | @override 22 | void urlChanged(String from, String to) {} 23 | 24 | OpenUrlTarget get target => OpenUrlTarget.values[targetValue]; 25 | set target(OpenUrlTarget value) => targetValue = value.index; 26 | } 27 | -------------------------------------------------------------------------------- /lib/src/rive_core/open_url_target.dart: -------------------------------------------------------------------------------- 1 | /// Open URL event target types. 2 | enum OpenUrlTarget { blank, parent, self, top } 3 | -------------------------------------------------------------------------------- /lib/src/rive_core/runtime/exceptions/rive_format_error_exception.dart: -------------------------------------------------------------------------------- 1 | import 'package:meta/meta.dart'; 2 | 3 | /// Thrown when a file being read doesn't match the Rive format. 4 | @immutable 5 | class RiveFormatErrorException implements Exception { 6 | final String cause; 7 | const RiveFormatErrorException(this.cause); 8 | } 9 | -------------------------------------------------------------------------------- /lib/src/rive_core/runtime/exceptions/rive_unsupported_version_exception.dart: -------------------------------------------------------------------------------- 1 | import 'package:meta/meta.dart'; 2 | 3 | /// Error that occurs when a file being loaded doesn't match the importer's 4 | /// supported version. 5 | @immutable 6 | class RiveUnsupportedVersionException implements Exception { 7 | final int majorVersion; 8 | final int minorVersion; 9 | final int fileMajorVersion; 10 | final int fileMinorVersion; 11 | const RiveUnsupportedVersionException(this.majorVersion, this.minorVersion, 12 | this.fileMajorVersion, this.fileMinorVersion); 13 | 14 | @override 15 | String toString() { 16 | return 'File contains version $fileMajorVersion.$fileMinorVersion. ' 17 | 'This runtime supports version $majorVersion.$minorVersion'; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /lib/src/rive_core/shapes/contour_mesh_vertex.dart: -------------------------------------------------------------------------------- 1 | import 'package:rive/src/generated/shapes/contour_mesh_vertex_base.dart'; 2 | export 'package:rive/src/generated/shapes/contour_mesh_vertex_base.dart'; 3 | 4 | class ContourMeshVertex extends ContourMeshVertexBase {} 5 | -------------------------------------------------------------------------------- /lib/src/rive_core/shapes/mesh_vertex.dart: -------------------------------------------------------------------------------- 1 | import 'package:rive/src/generated/shapes/mesh_vertex_base.dart'; 2 | import 'package:rive/src/rive_core/shapes/mesh.dart'; 3 | 4 | export 'package:rive/src/generated/shapes/mesh_vertex_base.dart'; 5 | 6 | class MeshVertex extends MeshVertexBase { 7 | Mesh? get mesh => parent as Mesh?; 8 | 9 | @override 10 | bool validate() => super.validate() && parent is Mesh; 11 | 12 | @override 13 | void markGeometryDirty() => mesh?.markDrawableDirty(); 14 | 15 | @override 16 | void uChanged(double from, double to) {} 17 | 18 | @override 19 | void vChanged(double from, double to) {} 20 | } 21 | -------------------------------------------------------------------------------- /lib/src/rive_core/shapes/paint/radial_gradient.dart: -------------------------------------------------------------------------------- 1 | import 'dart:ui' as ui; 2 | import 'package:rive/src/generated/shapes/paint/radial_gradient_base.dart'; 3 | export 'package:rive/src/generated/shapes/paint/radial_gradient_base.dart'; 4 | 5 | class RadialGradient extends RadialGradientBase { 6 | /// We override the make gradient operation to create a radial gradient 7 | /// instead of a linear one. 8 | @override 9 | ui.Gradient makeGradient(ui.Offset start, ui.Offset end, 10 | List colors, List colorPositions) => 11 | ui.Gradient.radial(start, (end - start).distance, colors, colorPositions); 12 | } 13 | -------------------------------------------------------------------------------- /lib/src/rive_core/shapes/paint/stroke_effect.dart: -------------------------------------------------------------------------------- 1 | import 'dart:ui'; 2 | 3 | abstract class StrokeEffect { 4 | Path effectPath(Path source); 5 | void invalidateEffect(); 6 | } 7 | -------------------------------------------------------------------------------- /lib/src/rive_core/shapes/path_vertex.dart: -------------------------------------------------------------------------------- 1 | import 'package:rive/src/generated/shapes/path_vertex_base.dart'; 2 | import 'package:rive/src/rive_core/bones/weight.dart'; 3 | import 'package:rive/src/rive_core/shapes/path.dart'; 4 | 5 | export 'package:rive/src/generated/shapes/path_vertex_base.dart'; 6 | 7 | abstract class PathVertex extends PathVertexBase { 8 | Path? get path => parent as Path?; 9 | 10 | @override 11 | void markGeometryDirty() => path?.markPathDirty(); 12 | } 13 | -------------------------------------------------------------------------------- /lib/src/rive_core/shapes/triangle.dart: -------------------------------------------------------------------------------- 1 | import 'package:rive/src/generated/shapes/triangle_base.dart'; 2 | import 'package:rive/src/rive_core/shapes/path_vertex.dart'; 3 | import 'package:rive/src/rive_core/shapes/straight_vertex.dart'; 4 | 5 | /// Export the Base class for external use (e.g. rive.dart) 6 | export 'package:rive/src/generated/shapes/triangle_base.dart'; 7 | 8 | class Triangle extends TriangleBase { 9 | @override 10 | List get vertices { 11 | double ox = -originX * width; 12 | double oy = -originY * height; 13 | 14 | return [ 15 | StraightVertex.procedural() 16 | ..x = ox + width / 2 17 | ..y = oy, 18 | StraightVertex.procedural() 19 | ..x = ox + width 20 | ..y = oy + height, 21 | StraightVertex.procedural() 22 | ..x = ox 23 | ..y = oy + height 24 | ]; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /lib/src/rive_core/state_transition_flags.dart: -------------------------------------------------------------------------------- 1 | class StateTransitionFlags { 2 | /// Whether the transition is disabled. 3 | static const int disabled = 1 << 0; 4 | 5 | /// Whether the transition duration is a percentage or time in ms. 6 | static const int durationIsPercentage = 1 << 1; 7 | 8 | /// Whether exit time is enabled. 9 | static const int enableExitTime = 1 << 2; 10 | 11 | /// Whether the exit time is a percentage or time in ms. 12 | static const int exitTimeIsPercentage = 1 << 3; 13 | 14 | /// Whether the animation is held at exit or if it keeps advancing during 15 | /// mixing. 16 | static const int pauseOnExit = 1 << 4; 17 | 18 | /// Whether the transition can exit before it is complete. 19 | static const int enableEarlyExit = 1 << 5; 20 | } 21 | -------------------------------------------------------------------------------- /lib/src/rive_core/text/text_modifier.dart: -------------------------------------------------------------------------------- 1 | import 'package:rive/src/generated/text/text_modifier_base.dart'; 2 | import 'package:rive/src/rive_core/text/text_modifier_group.dart'; 3 | 4 | export 'package:rive/src/generated/text/text_modifier_base.dart'; 5 | 6 | abstract class TextModifier extends TextModifierBase { 7 | TextModifierGroup? get modifierGroup => parent as TextModifierGroup?; 8 | } 9 | -------------------------------------------------------------------------------- /lib/src/rive_core/text/text_shape_modifier.dart: -------------------------------------------------------------------------------- 1 | import 'dart:collection'; 2 | 3 | import 'package:rive/src/generated/text/text_shape_modifier_base.dart'; 4 | import 'package:rive/src/rive_core/text/text.dart'; 5 | import 'package:rive_common/rive_text.dart'; 6 | 7 | export 'package:rive/src/generated/text/text_shape_modifier_base.dart'; 8 | 9 | abstract class TextShapeModifier extends TextShapeModifierBase { 10 | double modify(Text text, Font font, HashMap variations, 11 | double fontSize, double strength); 12 | } 13 | -------------------------------------------------------------------------------- /lib/src/rive_core/text/text_style_axis.dart: -------------------------------------------------------------------------------- 1 | import 'package:rive/src/generated/text/text_style_axis_base.dart'; 2 | import 'package:rive/src/rive_core/component_dirt.dart'; 3 | import 'package:rive_common/rive_text.dart'; 4 | 5 | export 'package:rive/src/generated/text/text_style_axis_base.dart'; 6 | 7 | class TextStyleAxis extends TextStyleAxisBase { 8 | String get tagName => FontTag.tagToName(tag); 9 | 10 | @override 11 | void update(int dirt) {} 12 | 13 | @override 14 | void axisValueChanged(double from, double to) { 15 | parent?.addDirt(ComponentDirt.textShape); 16 | } 17 | 18 | @override 19 | void tagChanged(int from, int to) => parent?.addDirt(ComponentDirt.textShape); 20 | } 21 | -------------------------------------------------------------------------------- /lib/src/rive_core/text/text_style_feature.dart: -------------------------------------------------------------------------------- 1 | import 'package:rive/src/generated/text/text_style_feature_base.dart'; 2 | import 'package:rive/src/rive_core/component_dirt.dart'; 3 | import 'package:rive_common/rive_text.dart'; 4 | 5 | export 'package:rive/src/generated/text/text_style_feature_base.dart'; 6 | 7 | class TextStyleFeature extends TextStyleFeatureBase { 8 | String get tagName => FontTag.tagToName(tag); 9 | 10 | @override 11 | void update(int dirt) {} 12 | 13 | @override 14 | void featureValueChanged(int from, int to) { 15 | parent?.addDirt(ComponentDirt.textShape); 16 | } 17 | 18 | @override 19 | void tagChanged(int from, int to) => parent?.addDirt(ComponentDirt.textShape); 20 | } 21 | -------------------------------------------------------------------------------- /lib/src/rive_core/transform_space.dart: -------------------------------------------------------------------------------- 1 | enum TransformSpace { world, local } 2 | -------------------------------------------------------------------------------- /lib/src/rive_core/viewmodel/data_enum.dart: -------------------------------------------------------------------------------- 1 | import 'package:rive/src/generated/viewmodel/data_enum_base.dart'; 2 | 3 | export 'package:rive/src/generated/viewmodel/data_enum_base.dart'; 4 | 5 | class DataEnum extends DataEnumBase { 6 | @override 7 | void onAdded() {} 8 | 9 | @override 10 | void onAddedDirty() {} 11 | } 12 | -------------------------------------------------------------------------------- /lib/src/rive_core/viewmodel/data_enum_value.dart: -------------------------------------------------------------------------------- 1 | import 'package:rive/src/generated/viewmodel/data_enum_value_base.dart'; 2 | 3 | export 'package:rive/src/generated/viewmodel/data_enum_value_base.dart'; 4 | 5 | class DataEnumValue extends DataEnumValueBase { 6 | @override 7 | void valueChanged(String from, String to) {} 8 | 9 | @override 10 | void keyChanged(String from, String to) {} 11 | 12 | @override 13 | void onAdded() {} 14 | 15 | @override 16 | void onAddedDirty() {} 17 | } 18 | -------------------------------------------------------------------------------- /lib/src/rive_core/viewmodel/viewmodel_component.dart: -------------------------------------------------------------------------------- 1 | import 'package:rive/src/generated/viewmodel/viewmodel_component_base.dart'; 2 | 3 | export 'package:rive/src/generated/viewmodel/viewmodel_component_base.dart'; 4 | 5 | class ViewModelComponent extends ViewModelComponentBase { 6 | @override 7 | void onAdded() {} 8 | 9 | @override 10 | void onAddedDirty() {} 11 | 12 | @override 13 | void nameChanged(String from, String to) {} 14 | } 15 | -------------------------------------------------------------------------------- /lib/src/rive_core/viewmodel/viewmodel_instance_boolean.dart: -------------------------------------------------------------------------------- 1 | import 'package:rive/src/generated/viewmodel/viewmodel_instance_boolean_base.dart'; 2 | import 'package:rive/src/rive_core/component_dirt.dart'; 3 | 4 | export 'package:rive/src/generated/viewmodel/viewmodel_instance_boolean_base.dart'; 5 | 6 | class ViewModelInstanceBoolean extends ViewModelInstanceBooleanBase { 7 | @override 8 | void propertyValueChanged(bool from, bool to) { 9 | addDirt(ComponentDirt.bindings); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /lib/src/rive_core/viewmodel/viewmodel_instance_color.dart: -------------------------------------------------------------------------------- 1 | import 'package:rive/src/generated/viewmodel/viewmodel_instance_color_base.dart'; 2 | import 'package:rive/src/rive_core/component_dirt.dart'; 3 | 4 | export 'package:rive/src/generated/viewmodel/viewmodel_instance_color_base.dart'; 5 | 6 | class ViewModelInstanceColor extends ViewModelInstanceColorBase { 7 | @override 8 | void propertyValueChanged(int from, int to) { 9 | addDirt(ComponentDirt.bindings); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /lib/src/rive_core/viewmodel/viewmodel_instance_enum.dart: -------------------------------------------------------------------------------- 1 | import 'package:rive/src/generated/viewmodel/viewmodel_instance_enum_base.dart'; 2 | import 'package:rive/src/rive_core/component_dirt.dart'; 3 | 4 | export 'package:rive/src/generated/viewmodel/viewmodel_instance_enum_base.dart'; 5 | 6 | class ViewModelInstanceEnum extends ViewModelInstanceEnumBase { 7 | @override 8 | void propertyValueChanged(int from, int to) { 9 | addDirt(ComponentDirt.bindings); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /lib/src/rive_core/viewmodel/viewmodel_instance_list_item.dart: -------------------------------------------------------------------------------- 1 | import 'package:rive/src/generated/viewmodel/viewmodel_instance_list_item_base.dart'; 2 | 3 | export 'package:rive/src/generated/viewmodel/viewmodel_instance_list_item_base.dart'; 4 | 5 | class ViewModelInstanceListItem extends ViewModelInstanceListItemBase { 6 | @override 7 | void viewModelIdChanged(int from, int to) {} 8 | 9 | @override 10 | void viewModelInstanceIdChanged(int from, int to) {} 11 | 12 | @override 13 | void artboardIdChanged(int from, int to) {} 14 | 15 | @override 16 | void onAdded() {} 17 | 18 | @override 19 | void useLinkedArtboardChanged(bool from, bool to) {} 20 | 21 | @override 22 | void onAddedDirty() {} 23 | } 24 | -------------------------------------------------------------------------------- /lib/src/rive_core/viewmodel/viewmodel_instance_number.dart: -------------------------------------------------------------------------------- 1 | import 'package:rive/src/generated/viewmodel/viewmodel_instance_number_base.dart'; 2 | import 'package:rive/src/rive_core/component_dirt.dart'; 3 | 4 | export 'package:rive/src/generated/viewmodel/viewmodel_instance_number_base.dart'; 5 | 6 | class ViewModelInstanceNumber extends ViewModelInstanceNumberBase { 7 | @override 8 | void propertyValueChanged(double from, double to) { 9 | addDirt(ComponentDirt.bindings); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /lib/src/rive_core/viewmodel/viewmodel_instance_string.dart: -------------------------------------------------------------------------------- 1 | import 'package:rive/src/generated/viewmodel/viewmodel_instance_string_base.dart'; 2 | import 'package:rive/src/rive_core/component_dirt.dart'; 3 | 4 | export 'package:rive/src/generated/viewmodel/viewmodel_instance_string_base.dart'; 5 | 6 | class ViewModelInstanceString extends ViewModelInstanceStringBase { 7 | @override 8 | void propertyValueChanged(String from, String to) { 9 | addDirt(ComponentDirt.bindings); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /lib/src/rive_core/viewmodel/viewmodel_instance_value.dart: -------------------------------------------------------------------------------- 1 | import 'package:rive/src/generated/viewmodel/viewmodel_instance_value_base.dart'; 2 | import 'package:rive/src/rive_core/artboard.dart'; 3 | import 'package:rive/src/rive_core/data_bind/data_bind_context.dart'; 4 | import 'package:rive/src/rive_core/dependency_helper.dart'; 5 | 6 | class ViewModelInstanceValue extends ViewModelInstanceValueBase { 7 | final DependencyHelper _dependencyHelper = 8 | DependencyHelper(); 9 | 10 | @override 11 | void viewModelPropertyIdChanged(int from, int to) {} 12 | 13 | @override 14 | void onAdded() {} 15 | 16 | @override 17 | void onAddedDirty() {} 18 | 19 | void addDependent(DataBindContextInterface value) { 20 | _dependencyHelper.addDependent(value); 21 | } 22 | 23 | bool addDirt(int value, {bool recurse = true}) { 24 | _dependencyHelper.addDirt(value); 25 | return true; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /lib/src/rive_core/viewmodel/viewmodel_instance_viewmodel.dart: -------------------------------------------------------------------------------- 1 | import 'package:rive/src/generated/viewmodel/viewmodel_instance_viewmodel_base.dart'; 2 | import 'package:rive/src/rive_core/viewmodel/viewmodel_instance.dart'; 3 | 4 | export 'package:rive/src/generated/viewmodel/viewmodel_instance_viewmodel_base.dart'; 5 | 6 | class ViewModelInstanceViewModel extends ViewModelInstanceViewModelBase { 7 | ViewModelInstance? referenceViewModelInstance; 8 | 9 | @override 10 | void propertyValueChanged(int from, int to) {} 11 | 12 | @override 13 | void onAddedDirty() { 14 | super.onAddedDirty(); 15 | referenceViewModelInstance = 16 | context.resolve(propertyValue); 17 | } 18 | 19 | ViewModelInstance? get viewModelInstance => context.resolve(propertyValue); 20 | } 21 | -------------------------------------------------------------------------------- /lib/src/rive_core/viewmodel/viewmodel_property.dart: -------------------------------------------------------------------------------- 1 | import 'package:rive/src/generated/viewmodel/viewmodel_property_base.dart'; 2 | import 'package:rive/src/rive_core/backboard.dart'; 3 | 4 | export 'package:rive/src/generated/viewmodel/viewmodel_property_base.dart'; 5 | 6 | class ViewModelProperty extends ViewModelPropertyBase { 7 | Backboard? backboard; 8 | 9 | @override 10 | void onAdded() {} 11 | } 12 | -------------------------------------------------------------------------------- /lib/src/rive_core/viewmodel/viewmodel_property_boolean.dart: -------------------------------------------------------------------------------- 1 | import 'package:rive/src/generated/viewmodel/viewmodel_property_boolean_base.dart'; 2 | 3 | export 'package:rive/src/generated/viewmodel/viewmodel_property_boolean_base.dart'; 4 | 5 | class ViewModelPropertyBoolean extends ViewModelPropertyBooleanBase {} 6 | -------------------------------------------------------------------------------- /lib/src/rive_core/viewmodel/viewmodel_property_color.dart: -------------------------------------------------------------------------------- 1 | import 'package:rive/src/generated/viewmodel/viewmodel_property_color_base.dart'; 2 | 3 | export 'package:rive/src/generated/viewmodel/viewmodel_property_color_base.dart'; 4 | 5 | class ViewModelPropertyColor extends ViewModelPropertyColorBase {} 6 | -------------------------------------------------------------------------------- /lib/src/rive_core/viewmodel/viewmodel_property_enum.dart: -------------------------------------------------------------------------------- 1 | import 'package:rive/src/generated/viewmodel/viewmodel_property_enum_base.dart'; 2 | 3 | export 'package:rive/src/generated/viewmodel/viewmodel_property_enum_base.dart'; 4 | 5 | class ViewModelPropertyEnum extends ViewModelPropertyEnumBase { 6 | @override 7 | void enumIdChanged(int from, int to) {} 8 | } 9 | -------------------------------------------------------------------------------- /lib/src/rive_core/viewmodel/viewmodel_property_list.dart: -------------------------------------------------------------------------------- 1 | import 'package:rive/src/generated/viewmodel/viewmodel_property_list_base.dart'; 2 | 3 | export 'package:rive/src/generated/viewmodel/viewmodel_property_list_base.dart'; 4 | 5 | class ViewModelPropertyList extends ViewModelPropertyListBase {} 6 | -------------------------------------------------------------------------------- /lib/src/rive_core/viewmodel/viewmodel_property_number.dart: -------------------------------------------------------------------------------- 1 | import 'package:rive/src/generated/viewmodel/viewmodel_property_number_base.dart'; 2 | 3 | export 'package:rive/src/generated/viewmodel/viewmodel_property_number_base.dart'; 4 | 5 | class ViewModelPropertyNumber extends ViewModelPropertyNumberBase {} 6 | -------------------------------------------------------------------------------- /lib/src/rive_core/viewmodel/viewmodel_property_string.dart: -------------------------------------------------------------------------------- 1 | import 'package:rive/src/generated/viewmodel/viewmodel_property_string_base.dart'; 2 | 3 | export 'package:rive/src/generated/viewmodel/viewmodel_property_string_base.dart'; 4 | 5 | class ViewModelPropertyString extends ViewModelPropertyStringBase {} 6 | -------------------------------------------------------------------------------- /lib/src/rive_core/viewmodel/viewmodel_property_viewmodel.dart: -------------------------------------------------------------------------------- 1 | import 'package:rive/src/generated/viewmodel/viewmodel_property_viewmodel_base.dart'; 2 | 3 | export 'package:rive/src/generated/viewmodel/viewmodel_property_viewmodel_base.dart'; 4 | 5 | class ViewModelPropertyViewModel extends ViewModelPropertyViewModelBase { 6 | @override 7 | void viewModelReferenceIdChanged(int from, int to) { 8 | // TODO: implement viewModelIdChanged 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /lib/src/state_machine_components.dart: -------------------------------------------------------------------------------- 1 | import 'dart:collection'; 2 | import 'package:rive/src/rive_core/animation/state_machine_component.dart'; 3 | 4 | class StateMachineComponents 5 | extends ListBase { 6 | final List _values = []; 7 | List get values => _values.cast(); 8 | 9 | @override 10 | int get length => _values.length; 11 | 12 | @override 13 | set length(int value) => _values.length = value; 14 | 15 | @override 16 | T operator [](int index) => _values[index]!; 17 | 18 | @override 19 | void operator []=(int index, T value) => _values[index] = value; 20 | } 21 | -------------------------------------------------------------------------------- /lib/src/state_transition_conditions.dart: -------------------------------------------------------------------------------- 1 | import 'dart:collection'; 2 | import 'package:rive/src/rive_core/animation/transition_condition.dart'; 3 | 4 | class StateTransitionConditions extends ListBase { 5 | final List _values = []; 6 | List get values => _values.cast(); 7 | 8 | @override 9 | int get length => _values.length; 10 | 11 | @override 12 | set length(int value) => _values.length = value; 13 | 14 | @override 15 | TransitionCondition operator [](int index) => _values[index]!; 16 | 17 | @override 18 | void operator []=(int index, TransitionCondition value) => 19 | _values[index] = value; 20 | } 21 | -------------------------------------------------------------------------------- /lib/src/state_transitions.dart: -------------------------------------------------------------------------------- 1 | import 'dart:collection'; 2 | import 'package:rive/src/rive_core/animation/state_transition.dart'; 3 | 4 | class StateTransitions extends ListBase { 5 | final List _values = []; 6 | List get values => _values.cast(); 7 | 8 | @override 9 | int get length => _values.length; 10 | 11 | @override 12 | set length(int value) => _values.length = value; 13 | 14 | @override 15 | StateTransition operator [](int index) => _values[index]!; 16 | 17 | @override 18 | void operator []=(int index, StateTransition value) => _values[index] = value; 19 | } 20 | -------------------------------------------------------------------------------- /lib/src/viewmodel_list_items.dart: -------------------------------------------------------------------------------- 1 | import 'dart:collection'; 2 | 3 | import 'package:rive/src/rive_core/viewmodel/viewmodel_instance_list_item.dart'; 4 | 5 | class ViewModelListItems 6 | extends ListBase { 7 | final List _values = []; 8 | List get values => _values.cast(); 9 | 10 | @override 11 | int get length => _values.length; 12 | 13 | @override 14 | set length(int value) => _values.length = value; 15 | 16 | @override 17 | T operator [](int index) => _values[index]!; 18 | 19 | @override 20 | void operator []=(int index, T value) => _values[index] = value; 21 | } 22 | -------------------------------------------------------------------------------- /lib/src/viewmodel_properties.dart: -------------------------------------------------------------------------------- 1 | import 'dart:collection'; 2 | 3 | import 'package:rive/src/rive_core/viewmodel/viewmodel_property.dart'; 4 | 5 | class ViewModelProperties extends ListBase { 6 | final List _values = []; 7 | List get values => _values.cast(); 8 | 9 | @override 10 | int get length => _values.length; 11 | 12 | @override 13 | set length(int value) => _values.length = value; 14 | 15 | @override 16 | T operator [](int index) => _values[index]!; 17 | 18 | @override 19 | void operator []=(int index, T value) => _values[index] = value; 20 | } 21 | -------------------------------------------------------------------------------- /pubspec.yaml: -------------------------------------------------------------------------------- 1 | name: rive 2 | version: 0.13.20 3 | homepage: https://rive.app 4 | description: Rive Flutter Runtime. This package provides runtime functionality for playing back and interacting with animations built with the Rive editor available at https://rive.app. 5 | repository: https://github.com/rive-app/rive-flutter 6 | topics: 7 | - animation 8 | - ui 9 | - effects 10 | - widgets 11 | - widget 12 | environment: 13 | sdk: ">=2.17.0 <4.0.0" 14 | flutter: ">=2.5.0" 15 | dependencies: 16 | collection: ^1.15.0 17 | flutter: 18 | sdk: flutter 19 | flutter_web_plugins: 20 | sdk: flutter 21 | http: ">=0.13.3 <2.0.0" 22 | meta: ^1.3.0 23 | plugin_platform_interface: ^2.0.2 24 | rive_common: 0.4.15 25 | dev_dependencies: 26 | flutter_test: 27 | sdk: flutter 28 | mocktail: 29 | path: ^1.8.3 -------------------------------------------------------------------------------- /test/assets/batch_rivs/circle-fui.riv: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:249baa6c8e69991c3d563e01942fa8e14d586f5325af81d7bbf2fae86de2a630 3 | size 286936 4 | -------------------------------------------------------------------------------- /test/assets/batch_rivs/danger-quarantine.riv: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:5aa95fe11dad1d78882d1537a61e175d8a1777efcb06b62310818aa203d4c177 3 | size 18519 4 | -------------------------------------------------------------------------------- /test/assets/batch_rivs/fire-skull.riv: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:560d6f4bdf39b83196fd49e4e8a1825b05279a83801cba80384640e1e1a6427a 3 | size 10715 4 | -------------------------------------------------------------------------------- /test/assets/batch_rivs/joystick-demos-fish.riv: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:72ddd483375fa9f38d47b765b9a4b3a3c4ea1568f175dce13c5cf0a95ef31bbe 3 | size 7248 4 | -------------------------------------------------------------------------------- /test/assets/batch_rivs/polito.riv: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:76e792dac0d5900841d0ed4112882725923173ea085bfe0471c74f9fdbf9f414 3 | size 7709 4 | -------------------------------------------------------------------------------- /test/assets/cdn_image.riv: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:8d93c5ca67c938ae4738342ec1b046f09c22a547167ffe7570bf0d899178fba5 3 | size 206 4 | -------------------------------------------------------------------------------- /test/assets/component_discovery.riv: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:d09c9d88024d7944c231e4d8b6509040fa7d68219c06ba0730fed077834f8eeb 3 | size 806088 4 | -------------------------------------------------------------------------------- /test/assets/electrified_button_simple.riv: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:72ac13f7988750df3ad741c46be22d4b9a697a8c369cd6d851cd694f0b629929 3 | size 820926 4 | -------------------------------------------------------------------------------- /test/assets/event_on_listener.riv: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:011407faa0f4eba9576556c4733e524d8989bc489d75ff35afba31ff88fc3598 3 | size 429 4 | -------------------------------------------------------------------------------- /test/assets/events_from_trigger_test.riv: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:43496fca427b3da9640dbb646fe20a6982fdb14586ffd777ccd2f5395aa8b78a 3 | size 415 4 | -------------------------------------------------------------------------------- /test/assets/events_on_states.riv: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:6f360a9ba8e224871161a4945d24959c75fba97d9ca81f33be0f73252c31b3c4 3 | size 486 4 | -------------------------------------------------------------------------------- /test/assets/file.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:24229c70fc2c0487df97ee0deb7b5c80446a0aaaac11ba9268c2d814894f8adb 3 | size 159880 4 | -------------------------------------------------------------------------------- /test/assets/follow_path_path.riv: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:54020ef6a20855612b904334a59c4f65649f77215aa062c9d0c5618f3ddca5d6 3 | size 818701 4 | -------------------------------------------------------------------------------- /test/assets/follow_path_shapes.riv: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:6d2eea5391be368871ba71c5b6cf9b8b8a20fe3ac00f98a473c552e08208493c 3 | size 2750 4 | -------------------------------------------------------------------------------- /test/assets/follow_path_solos.riv: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:89e77e51b507430adb94340455a2b7bd4da40aef55f1ee9568603f50ea09963f 3 | size 287 4 | -------------------------------------------------------------------------------- /test/assets/hit_test_consume.riv: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:a170d016dde9426d0ba45626de1879c2424a0dbc887fa65513a274b9e7d3cf9a 3 | size 202 4 | -------------------------------------------------------------------------------- /test/assets/hit_test_pass_through.riv: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:2b96d1eb4564c2a0fe4d3dde81154317c10e92bd07a1c93c7e35a5cd3996f1ec 3 | size 121 4 | -------------------------------------------------------------------------------- /test/assets/image_asset_prod.riv: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:4a4b3c5a134fab30ec82efad6353c7b04062f35ddafa9777526ce59d12b421f6 3 | size 240 4 | -------------------------------------------------------------------------------- /test/assets/image_asset_uat.riv: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:63059240dc7db95ff65c1d349ba09396934c9d57a24bfe4092e282d0f4f7cebc 3 | size 281 4 | -------------------------------------------------------------------------------- /test/assets/joystick_handle_source.riv: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:fc047f6e53f6f3c0a7d044a61faf9d15792c4cfedb14dc9f8f39307f7e29a7f9 3 | size 602 4 | -------------------------------------------------------------------------------- /test/assets/off_road_car.riv: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:a2cf7f74416ebc7c1016dd6801d38ea6e80cd936fead3d7b6240a34110fda960 3 | size 34921 4 | -------------------------------------------------------------------------------- /test/assets/rive-flutter-test-asset.riv: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:df1b7d04a10f1c5d402497c88f44a30ab5dd19ca4a110cfe4d7103ea97bd8353 3 | size 264 4 | -------------------------------------------------------------------------------- /test/assets/runtime_nested_inputs.riv: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:61a14d72c5b9694b675d729e756fd4e3d0a075bf76ed545d07b62c301af962a0 3 | size 947 4 | -------------------------------------------------------------------------------- /test/assets/sample_image.riv: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:321771e476c91cdf145c0cbb39432b7e2debe1eb17fe6da80eb8ddb1684ad830 3 | size 202647 4 | -------------------------------------------------------------------------------- /test/assets/skins_demo.riv: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:b7b9bc316e5db9056ff6713ecedd07b304d9e19da9b8310b68369b92711946b2 3 | size 19672 4 | -------------------------------------------------------------------------------- /test/assets/spilled_time.riv: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:86831a723012b7d779ce1cb7695dc7b87dfe0780bfbf5df24ddf332cf6155f11 3 | size 367 4 | -------------------------------------------------------------------------------- /test/goldens/batch_tests/images/circle-fui.riv-01.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:852a99c18941c61d80e56858f42c8d8675f8baf22a0207483b23a5b8924a97b5 3 | size 361506 4 | -------------------------------------------------------------------------------- /test/goldens/batch_tests/images/circle-fui.riv-02.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:04fecfd9229642c791421e274729266dc1c6583d984a5fe3b3b391a6a1601c9a 3 | size 362826 4 | -------------------------------------------------------------------------------- /test/goldens/batch_tests/images/circle-fui.riv-03.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:f44a79f5df1a626f85470853b66a105bb60e953f94dfbeca7b3413e674006b84 3 | size 365185 4 | -------------------------------------------------------------------------------- /test/goldens/batch_tests/images/danger-quarantine.riv-01.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:5171752505766020ba4ce60415442178f2a5d8346f6400d3c0dd91fa2d83deb8 3 | size 81618 4 | -------------------------------------------------------------------------------- /test/goldens/batch_tests/images/danger-quarantine.riv-02.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:cb9973c589844248c533c3105002ec81fa31da0868f58a2091251588fe1c3c96 3 | size 83146 4 | -------------------------------------------------------------------------------- /test/goldens/batch_tests/images/danger-quarantine.riv-03.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:a56009a140acbbed25e77762b42ec7c8ad5a8f2439b339cc60a2382986ff17cf 3 | size 78347 4 | -------------------------------------------------------------------------------- /test/goldens/batch_tests/images/fire-skull.riv-01.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:3971fbaf5a4bac3c2574688a0fb0f185d5afa1febf25467c7f15a650af163989 3 | size 64959 4 | -------------------------------------------------------------------------------- /test/goldens/batch_tests/images/fire-skull.riv-02.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:c944f27011f53f75267dfe0f3dcb5eba6fdb65beb330f8cde30beec1e92d2b2a 3 | size 65900 4 | -------------------------------------------------------------------------------- /test/goldens/batch_tests/images/fire-skull.riv-03.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:b422ee1ec995f3edce424889ab1049aad21a6fc35ae727aeb7126fac25e93169 3 | size 65212 4 | -------------------------------------------------------------------------------- /test/goldens/batch_tests/images/joystick-demos-fish.riv-01.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:16b2f488a493a008cd3c36a5069d8060a2c1bc75b1b07da8bb10c0a17d5b3b8e 3 | size 33598 4 | -------------------------------------------------------------------------------- /test/goldens/batch_tests/images/joystick-demos-fish.riv-02.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:a90e4121263df29b7d054a27246e22d89a2b4c4c169a31deabec44fb4d580f2e 3 | size 37772 4 | -------------------------------------------------------------------------------- /test/goldens/batch_tests/images/joystick-demos-fish.riv-03.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:cb9941546879d69f03628c2b5a5fa28c26bb8902653910d7e43fea4699c50e6b 3 | size 39343 4 | -------------------------------------------------------------------------------- /test/goldens/batch_tests/images/polito.riv-01.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:8f87a6833528f59a06a7c94479c39d85dfc0816a9ad896c53f9ee9c73f643072 3 | size 68499 4 | -------------------------------------------------------------------------------- /test/goldens/batch_tests/images/polito.riv-02.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:f1f43ec135be96620d47b1a458b7bcbdd35ef3694cd023fa40d7389fa7436b81 3 | size 61843 4 | -------------------------------------------------------------------------------- /test/goldens/batch_tests/images/polito.riv-03.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:e69d34a5943e5ba0967068314114430bf74b5b0be58ae5313deaf71e8078fb53 3 | size 71791 4 | -------------------------------------------------------------------------------- /test/goldens/follow_path/images/follow_path_over_time_01.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:d90bcda9c1f5d8c05fdef40737db44703a0c383169862f8e3465b29ad87d97a5 3 | size 62061 4 | -------------------------------------------------------------------------------- /test/goldens/follow_path/images/follow_path_over_time_02.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:16e4eab3f99a34ecb07897f5a71a451c00c8f1bcf9bc8d0c4c4ee8a4ab2bea24 3 | size 66343 4 | -------------------------------------------------------------------------------- /test/goldens/follow_path/images/follow_path_over_time_03.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:b91954012d83c34cb4725c8c5608e655df6741f033ee16561962a72463b4c96d 3 | size 65824 4 | -------------------------------------------------------------------------------- /test/goldens/follow_path/images/follow_path_over_time_04.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:d7c79af5b882dfddbc94aa7a5d1efa17808cbfa875a1380307173a7911afc757 3 | size 64784 4 | -------------------------------------------------------------------------------- /test/goldens/follow_path/images/follow_path_path_01.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:0d3b7b54b69a740a897da914630555bbce9a9dfabeaa3fdfa4a4ce37774c6270 3 | size 150139 4 | -------------------------------------------------------------------------------- /test/goldens/follow_path/images/follow_path_path_02.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:c110b54737e9da7df678f471087814eae637f2fd6e57ce56c7c6d68ced726976 3 | size 149757 4 | -------------------------------------------------------------------------------- /test/goldens/follow_path/images/follow_path_path_03.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:bd0704254d162ce9540e3e1fb738e22a9622b25f64f13a5fa164fece41cd2d00 3 | size 141876 4 | -------------------------------------------------------------------------------- /test/goldens/follow_path/images/follow_path_solos_01.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:473577ef768bf7d5546d11b6a6cb82aad14d4eaf2a48d09baab27ac41d55846b 3 | size 43844 4 | -------------------------------------------------------------------------------- /test/goldens/follow_path/images/follow_path_solos_02.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:96d5a56012fdd986171c25406924201d9644198fc3a1c79e531f8d39f47377dc 3 | size 43486 4 | -------------------------------------------------------------------------------- /test/goldens/follow_path/images/follow_path_solos_03.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:74c5ccb50884f559a90a1fdc37e36119c1d6a7c3fbceb66357d80241123e537a 3 | size 44174 4 | -------------------------------------------------------------------------------- /test/goldens/follow_path/images/follow_path_solos_04.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:b236d2a8c3c6e97503e455d40c1e556447d1884eda8d41e844f45e7563d37fab 3 | size 44075 4 | -------------------------------------------------------------------------------- /test/goldens/joysticks/images/joystick_handle_source_01.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:b650e64d24fb3c05fc3dbe4cba6c3b6af787341a8cf743982f311988674d0e66 3 | size 21334 4 | -------------------------------------------------------------------------------- /test/goldens/joysticks/images/joystick_handle_source_02.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:43c9dcb740e44b33edd13e08878103852ae0eb7ee3e9149dd2124d9c045c4187 3 | size 21308 4 | -------------------------------------------------------------------------------- /test/goldens/joysticks/images/joystick_handle_source_03.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:7285eacb544a5c319b4c7510bdd6f782883a00a125913c57fc4cc92cf9adf3ce 3 | size 21311 4 | -------------------------------------------------------------------------------- /test/goldens/joysticks/images/joystick_handle_source_04.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:f63921034ece5bd1be1d7cb96d84c6b4bf28fbd3f7f56e814b71c5150444cf6d 3 | size 21322 4 | -------------------------------------------------------------------------------- /test/goldens/simple_animations/images/mixed_animations_01.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:17ce202d83aa483a07474e0adad651dd3859938224cb54b9afba3f8ec6ff757a 3 | size 497679 4 | -------------------------------------------------------------------------------- /test/goldens/simple_animations/images/mixed_animations_02.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:82c34817b2ae0c6051bbd22b4ef7ccc992044a96ac527dd33ad86addf72d83bb 3 | size 491924 4 | -------------------------------------------------------------------------------- /test/goldens/simple_animations/images/play_first_animation_found.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:dcb348e2b2a7360bf6e4100879befc767176b65a7f04138c2428e9cb93170a66 3 | size 462288 4 | -------------------------------------------------------------------------------- /test/goldens/simple_animations/images/play_provided_animation_controller_01.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:3626496af8cedecca04796fcf2eee9deaf8c9eb0cf7cdf5a323e26aed1060317 3 | size 505022 4 | -------------------------------------------------------------------------------- /test/goldens/simple_animations/images/play_provided_animation_controller_02.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:9152c60eaca00018a44d3cef375827f9a616e38c24b04d9a4bd5e23f4380fcf3 3 | size 508222 4 | -------------------------------------------------------------------------------- /test/goldens/skins_opacity/images/skins_opacity_01.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:1e04235a1d43106315eb4abad9ee63a07a3e656363601da6223890afa0ad7c52 3 | size 26543 4 | -------------------------------------------------------------------------------- /test/goldens/skins_opacity/images/skins_opacity_02.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:dd890928ccef4e12106db697f926e79449fb20b16c01b5a6e1701d15bc823e1a 3 | size 28170 4 | -------------------------------------------------------------------------------- /test/goldens/skins_opacity/images/skins_opacity_03.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:391b7c21c44e8760a9a8b6ed83cd8deaf03bae701876810bf8ddaba7ea26d28d 3 | size 31862 4 | -------------------------------------------------------------------------------- /test/goldens/skins_opacity/images/skins_opacity_04.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:e051cf8d2c0f396194d55589c9b58fc888422f6b5015c2c079f2144f067428a6 3 | size 28979 4 | -------------------------------------------------------------------------------- /test/goldens/skins_opacity/images/skins_opacity_05.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:6a3abd62dce3becf00e92273615f264b8272f8ea228fb76c21d8356a169ed20c 3 | size 36698 4 | -------------------------------------------------------------------------------- /test/goldens/spilled_time/images/spilled_time_00.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:232f5484944a4ce2b9002f443800e1ca1e9c04f55790f67f41960434555d007f 3 | size 21139 4 | -------------------------------------------------------------------------------- /test/goldens/spilled_time/images/spilled_time_01.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:27bf6a24a874ed77e25e29b4b294f5207a0489656d6c7caea532b3f23375c212 3 | size 21138 4 | -------------------------------------------------------------------------------- /test/goldens/spilled_time/images/spilled_time_02.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:36d8f3786a1ee6206deac0a7fac12fafab69795a7a72b7595b272e8c7c694b5c 3 | size 21133 4 | -------------------------------------------------------------------------------- /test/goldens/spilled_time/images/spilled_time_03.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:6ae4c6fb4ce0847134e7059d0cb6c259896a26f18c511edf3300f946b841af3d 3 | size 21138 4 | -------------------------------------------------------------------------------- /test/goldens/spilled_time/images/spilled_time_04.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:232f5484944a4ce2b9002f443800e1ca1e9c04f55790f67f41960434555d007f 3 | size 21139 4 | -------------------------------------------------------------------------------- /test/goldens/spilled_time/images/spilled_time_05.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:86d7be8a4e4ac369ba524a278f60a87f8189b0869c3d884a7f1c7d41ecbeb3f1 3 | size 21140 4 | -------------------------------------------------------------------------------- /test/goldens/spilled_time/images/spilled_time_exact_00.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:232f5484944a4ce2b9002f443800e1ca1e9c04f55790f67f41960434555d007f 3 | size 21139 4 | -------------------------------------------------------------------------------- /test/goldens/spilled_time/images/spilled_time_exact_01.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:64abf4ab9a8fc63dc33f4380642217d5eb5ced4e684ec6989ad0c57a7da4a263 3 | size 21140 4 | -------------------------------------------------------------------------------- /test/goldens/spilled_time/images/spilled_time_exact_02.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:232f5484944a4ce2b9002f443800e1ca1e9c04f55790f67f41960434555d007f 3 | size 21139 4 | -------------------------------------------------------------------------------- /test/goldens/spilled_time/images/spilled_time_overshoot_00.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:232f5484944a4ce2b9002f443800e1ca1e9c04f55790f67f41960434555d007f 3 | size 21139 4 | -------------------------------------------------------------------------------- /test/goldens/spilled_time/images/spilled_time_overshoot_01.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:36d8f3786a1ee6206deac0a7fac12fafab69795a7a72b7595b272e8c7c694b5c 3 | size 21133 4 | -------------------------------------------------------------------------------- /test/goldens/spilled_time/images/spilled_time_overshoot_02.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:232f5484944a4ce2b9002f443800e1ca1e9c04f55790f67f41960434555d007f 3 | size 21139 4 | -------------------------------------------------------------------------------- /test/goldens/text/images/text_bones_constraint_01.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:ddeb9c542c5253b4ff4b8d7289e6d318f3a061041ceeecfa6f723ab0abad761e 3 | size 42087 4 | -------------------------------------------------------------------------------- /test/goldens/text/images/text_bones_constraint_02.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:61cff8801da33c1431fc5e58420b5c02c48f8e9f5f3199fb1287261608996289 3 | size 77065 4 | -------------------------------------------------------------------------------- /test/goldens/text/images/text_bones_constraint_03.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:fec3cf8130def01847828f3cd4031d5eda59af442a60cb923a4e1aabd7a3aecb 3 | size 67366 4 | -------------------------------------------------------------------------------- /test/goldens/text/images/text_bones_constraint_04.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:3ddd3040ca2bf52e28a9657b6791c5d80d6f91941d8e97705b19b23daeea6c95 3 | size 87510 4 | -------------------------------------------------------------------------------- /test/goldens/ticker_mode/images/ticker_mode_false.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:dcb348e2b2a7360bf6e4100879befc767176b65a7f04138c2428e9cb93170a66 3 | size 462288 4 | -------------------------------------------------------------------------------- /test/goldens/ticker_mode/images/ticker_mode_true_1.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:c2cfab857dbcad75420973bdf1bc74fa6d83d3ac7428bb30f524616e4f0767dd 3 | size 463733 4 | -------------------------------------------------------------------------------- /test/goldens/ticker_mode/images/ticker_mode_true_2.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:c6e9cbded409f8f4838c8ce7f18fa7e2721087cb40d334afb04a85ebe7843c2e 3 | size 473098 4 | -------------------------------------------------------------------------------- /test/goldens/ticker_mode/images/ticker_mode_true_paused_state.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:e6ed13efb7f90bc32b5b5f8bd8a87dcd50aa8c5e532d18b486b3b1fad20f2384 3 | size 466392 4 | -------------------------------------------------------------------------------- /test/mocks/fakes.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter_test/flutter_test.dart'; 2 | import 'package:rive/rive.dart'; 3 | 4 | class ArtboardFake extends Fake implements Artboard { 5 | bool _isPlaying = true; 6 | 7 | @override 8 | bool get isPlaying => _isPlaying; 9 | 10 | @override 11 | void pause() { 12 | _isPlaying = false; 13 | } 14 | 15 | @override 16 | void play() { 17 | _isPlaying = true; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /test/mocks/mocks.dart: -------------------------------------------------------------------------------- 1 | import 'package:mocktail/mocktail.dart'; 2 | import 'package:rive/src/rive_core/artboard.dart'; 3 | export 'fakes.dart'; 4 | 5 | // ignore: one_member_abstracts 6 | abstract class _OnInitFunction { 7 | void call(Artboard _); 8 | } 9 | 10 | class OnInitCallbackMock extends Mock implements _OnInitFunction {} 11 | --------------------------------------------------------------------------------