From 6b60ab008801d067a9e3e022a2dbaaafd66fb74a Mon Sep 17 00:00:00 2001 From: Florian Schindler <florianschndlr@gmail.com> Date: Tue, 27 Jun 2023 17:19:12 +0200 Subject: [PATCH] added rive and rive animation to the project and onboarding --- trackeroo/android/app/build.gradle | 1 + trackeroo/assets/rive/piggy.riv | Bin 0 -> 1451 bytes trackeroo/lib/app_scaffold.dart | 4 +- .../utils/onboarding/ob_categories.dart | 21 ++++--- .../frontend/utils/onboarding/ob_details.dart | 21 ++++--- .../frontend/utils/onboarding/ob_home.dart | 21 ++++--- .../utils/onboarding/ob_trackeroo.dart | 54 ++++++++++++++++-- .../Flutter/GeneratedPluginRegistrant.swift | 2 + trackeroo/pubspec.lock | 29 ++++++++++ trackeroo/pubspec.yaml | 6 +- .../flutter/generated_plugin_registrant.cc | 3 + .../windows/flutter/generated_plugins.cmake | 1 + 12 files changed, 132 insertions(+), 31 deletions(-) create mode 100644 trackeroo/assets/rive/piggy.riv diff --git a/trackeroo/android/app/build.gradle b/trackeroo/android/app/build.gradle index d044c0f..896cb48 100644 --- a/trackeroo/android/app/build.gradle +++ b/trackeroo/android/app/build.gradle @@ -28,6 +28,7 @@ apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" android { compileSdkVersion flutter.compileSdkVersion ndkVersion flutter.ndkVersion + ndkVersion "25.1.8937393" compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 diff --git a/trackeroo/assets/rive/piggy.riv b/trackeroo/assets/rive/piggy.riv new file mode 100644 index 0000000000000000000000000000000000000000..fb164d47a191d21d69bea50ade5ca43d43a17993 GIT binary patch literal 1451 zcma)4+e;K-6hAZW;I2C3PRz1sx^CfQ<)xNIL`%n+>1LUUrBM{L>F&BEYTJfs57|9U zD!R}edI%~ph){Z1sZ}9-sOS&qL4$5!Qg(TW!p=7{?xx#A1LxzM@B5we`<-*9rlM|j zBE0O(yiH9|Kt4NAi2y%UGdb|ilv3qwbIQTc?iNq50cew@I^cJ%4YnL;Wq_riL*?l6 z&s0b-CEx=?rLLEA-PW69CnSEfEF`fv7B&uZ4QD5Z!Nkx)`LTZ4Mh=+Ah+^f2`e{gD zXlr=nmc-xfxhApZ%C|BinOVq1Q6#^2eul(eeScr(?)4v5AdxW(a^oi1Ho7mQWYyIk zR<UqS6mGrp)i3eeuYD_HBP+XxW^$6_a~4N)*j+YC=FA_DD5!%IUT>ICY!!`R1q&|` zpA5c3#U@LQw?5=)_BVM^{I9JS%J^-HMPlj80}2-@{t!W3yl}|UrrJ*Z$WyZb4wCex zVo&#g-ted7YKiUtvQy!zgBhd^As(J9KDaln!($X<;i(AM+1pDf?D08yQ3}2K@u}aW zjdWp4?H<+kuy=|KK3~K=7vL(B)RsWA({Jn&$S%WGkH{`f<b}yhE#Grpw7%)fmw0lp z0G&nLrR=UDtmzOgWLp#)Ik0Ad82+q@by$!04N5#Y*gU%QG1uvB9YFYkS@31znHS^J zn73SXxm*AOL!&WhX0&894vj|>(CldGXb!XmXaE_IRb;AYX!5S0Ak9rddZ85@tLW9P zH7HR6hpGoY-$@dzjJ>26^8W(5-TUVN)7+U@l|?XxH9J%cI3siN$bgFcW-=pRQ=qj3 z$0_|=Mv}%n^8GZao~i`~m7oPX&K)H$_LxA2y5#R5UkhG5?;$X^7Q}0Hs1m9)YAKpv zZ3tE98r<zOZrlKLiAGUfqA@mI;=1vU|B>kP`C<~|=dMdMYR!>oa1)7|tB)QRs#;^c zr0MQcywz8tb(j;oT{<&10$Dy2NX8QNUt`u9wO`$#S~O^H>7Z&5_PuH+u1+|rL<u#Q z5E=l3@ZueU)(N#Lg+-~GL!OY=xzSVK7-;r7T~N|ZS+)cNe!n+}QE@kwSm|lk{4ywq e(#sSD@)gQ-l}foyHQ>KQ0&)$+qhZwz^!@-gh*=&0 literal 0 HcmV?d00001 diff --git a/trackeroo/lib/app_scaffold.dart b/trackeroo/lib/app_scaffold.dart index c5f3f88..c701096 100644 --- a/trackeroo/lib/app_scaffold.dart +++ b/trackeroo/lib/app_scaffold.dart @@ -64,8 +64,8 @@ class _AppScaffoldState extends State<AppScaffold> { label: 'Home' ), NavigationDestination( - icon: Icon(Icons.bar_chart_rounded), - selectedIcon: Icon(Icons.bar_chart_rounded), + icon: Icon(Icons.bar_chart), + selectedIcon: Icon(Icons.bar_chart), label: 'Details' ), NavigationDestination( diff --git a/trackeroo/lib/frontend/utils/onboarding/ob_categories.dart b/trackeroo/lib/frontend/utils/onboarding/ob_categories.dart index ef8c659..037f644 100644 --- a/trackeroo/lib/frontend/utils/onboarding/ob_categories.dart +++ b/trackeroo/lib/frontend/utils/onboarding/ob_categories.dart @@ -11,15 +11,22 @@ class OnboardingCategories extends StatelessWidget { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Text( - 'Categories', - style: TextStyle( - fontSize: 40.0, - fontWeight: FontWeight.w300 - ), + Row( + children: [ + Icon(Icons.category_rounded, size: 40.0), + SizedBox(width: 20.0), + Text( + 'Categories', + style: TextStyle( + fontSize: 40.0, + fontWeight: FontWeight.w300 + ), + ), + ], ), + SizedBox(height: 20.0), Text( - 'shows budget and lets you create and manage categories', + 'Edit existing categories or create new ones. What ever you need in order to categorize and sort your expenditures. ', style: TextStyle( fontSize: 16.0 ), diff --git a/trackeroo/lib/frontend/utils/onboarding/ob_details.dart b/trackeroo/lib/frontend/utils/onboarding/ob_details.dart index 695e030..070d4de 100644 --- a/trackeroo/lib/frontend/utils/onboarding/ob_details.dart +++ b/trackeroo/lib/frontend/utils/onboarding/ob_details.dart @@ -11,15 +11,22 @@ class OnboardingDetails extends StatelessWidget { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Text( - 'Details', - style: TextStyle( - fontSize: 40.0, - fontWeight: FontWeight.w300 - ), + Row( + children: [ + Icon(Icons.bar_chart, size: 40.0), + SizedBox(width: 20.0), + Text( + 'Details', + style: TextStyle( + fontSize: 40.0, + fontWeight: FontWeight.w300 + ), + ), + ], ), + SizedBox(height: 20.0), Text( - 'gives in depth information', + 'Deep dive into all of your transactions and analyze your spending. ', style: TextStyle( fontSize: 16.0 ), diff --git a/trackeroo/lib/frontend/utils/onboarding/ob_home.dart b/trackeroo/lib/frontend/utils/onboarding/ob_home.dart index b80dc57..913d501 100644 --- a/trackeroo/lib/frontend/utils/onboarding/ob_home.dart +++ b/trackeroo/lib/frontend/utils/onboarding/ob_home.dart @@ -11,15 +11,22 @@ class OnboardingHome extends StatelessWidget { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Text( - 'Home', - style: TextStyle( - fontSize: 40.0, - fontWeight: FontWeight.w300 - ), + Row( + children: [ + Icon(Icons.home_rounded, size: 40.0), + SizedBox(width: 20.0), + Text( + 'Home', + style: TextStyle( + fontSize: 40.0, + fontWeight: FontWeight.w300 + ), + ), + ], ), + SizedBox(height: 20.0), Text( - 'gives an overview', + 'Get an overview of your balance and average spending, aswell as your latest transactions.', style: TextStyle( fontSize: 16.0 ), diff --git a/trackeroo/lib/frontend/utils/onboarding/ob_trackeroo.dart b/trackeroo/lib/frontend/utils/onboarding/ob_trackeroo.dart index 58e4d5f..a82f035 100644 --- a/trackeroo/lib/frontend/utils/onboarding/ob_trackeroo.dart +++ b/trackeroo/lib/frontend/utils/onboarding/ob_trackeroo.dart @@ -1,29 +1,73 @@ +// ignore_for_file: must_be_immutable + import 'package:flutter/material.dart'; +import 'package:rive/rive.dart'; -class OnboardingTrackeroo extends StatelessWidget { +class OnboardingTrackeroo extends StatefulWidget { const OnboardingTrackeroo({super.key}); + @override + State<OnboardingTrackeroo> createState() => _OnboardingTrackerooState(); +} + +class _OnboardingTrackerooState extends State<OnboardingTrackeroo> { + SMITrigger? _trigger; + + void _onRiveInit(Artboard artboard) { + final controller = StateMachineController.fromArtboard(artboard, 'State Machine 1')!; + artboard.addController(controller); + _trigger = controller.findInput<bool>('Trigger 1') as SMITrigger; + Future.delayed(const Duration(milliseconds: 1000), () { + _hitTrigger(); + }); + } + + void _hitTrigger() => _trigger?.fire(); + @override Widget build(BuildContext context) { - return const SafeArea( + return SafeArea( child: Padding( - padding: EdgeInsets.all(20.0), + padding: const EdgeInsets.all(20.0), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Text( + const Text( 'Trackeroo', style: TextStyle( fontSize: 40.0, fontWeight: FontWeight.w300 ), ), - Text( + const Text( 'enables you to tackle your finances and keep an eye on your spending.', style: TextStyle( fontSize: 16.0 ), ), + GestureDetector( + onTap: _hitTrigger, + child: Center( + child: SizedBox( + width: 300.0, + height: 500.0, + child: RiveAnimation.asset( + 'assets/rive/piggy.riv', + onInit: _onRiveInit, + animations: const ['Coinflip'], + fit: BoxFit.contain + ), + ), + ), + ), + const Center( + child: Text( + '(you are allowed to pet the pig)', + style: TextStyle( + fontSize: 10.0 + ), + ), + ) ] ), ), diff --git a/trackeroo/macos/Flutter/GeneratedPluginRegistrant.swift b/trackeroo/macos/Flutter/GeneratedPluginRegistrant.swift index e777c67..7f14ccd 100644 --- a/trackeroo/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/trackeroo/macos/Flutter/GeneratedPluginRegistrant.swift @@ -6,7 +6,9 @@ import FlutterMacOS import Foundation import path_provider_foundation +import rive_common func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin")) + RivePlugin.register(with: registry.registrar(forPlugin: "RivePlugin")) } diff --git a/trackeroo/pubspec.lock b/trackeroo/pubspec.lock index 1091aee..4a35c63 100644 --- a/trackeroo/pubspec.lock +++ b/trackeroo/pubspec.lock @@ -251,6 +251,11 @@ packages: description: flutter source: sdk version: "0.0.0" + flutter_web_plugins: + dependency: transitive + description: flutter + source: sdk + version: "0.0.0" frontend_server_client: dependency: transitive description: @@ -307,6 +312,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.0.0" + http: + dependency: transitive + description: + name: http + sha256: "5895291c13fa8a3bd82e76d5627f69e0d85ca6a30dcac95c4ea19a5d555879c2" + url: "https://pub.dev" + source: hosted + version: "0.13.6" http_multi_server: dependency: transitive description: @@ -507,6 +520,22 @@ packages: url: "https://pub.dev" source: hosted version: "1.2.3" + rive: + dependency: "direct main" + description: + name: rive + sha256: "55e1f8bf249444545a7c832830d2bbb9adae759193fb879294bc6018b9f0eedd" + url: "https://pub.dev" + source: hosted + version: "0.11.3" + rive_common: + dependency: transitive + description: + name: rive_common + sha256: "7e17937b790bb2f631767b3d505da8c298309c0a6ab08cd317fa6fe081ed5b63" + url: "https://pub.dev" + source: hosted + version: "0.0.10" shelf: dependency: transitive description: diff --git a/trackeroo/pubspec.yaml b/trackeroo/pubspec.yaml index 5694bfd..f5c5761 100644 --- a/trackeroo/pubspec.yaml +++ b/trackeroo/pubspec.yaml @@ -41,6 +41,7 @@ dependencies: hive_generator: ^2.0.0 get_it: ^7.6.0 flutter_colorpicker: ^1.0.3 + rive: ^0.11.3 dev_dependencies: flutter_test: @@ -66,9 +67,8 @@ flutter: uses-material-design: true # To add assets to your application, add an assets section, like this: - # assets: - # - images/a_dot_burr.jpeg - # - images/a_dot_ham.jpeg + assets: + - assets/rive/ # An image asset can refer to one or more resolution-specific "variants", see # https://flutter.dev/assets-and-images/#resolution-aware diff --git a/trackeroo/windows/flutter/generated_plugin_registrant.cc b/trackeroo/windows/flutter/generated_plugin_registrant.cc index 8b6d468..829b2da 100644 --- a/trackeroo/windows/flutter/generated_plugin_registrant.cc +++ b/trackeroo/windows/flutter/generated_plugin_registrant.cc @@ -6,6 +6,9 @@ #include "generated_plugin_registrant.h" +#include <rive_common/rive_plugin.h> void RegisterPlugins(flutter::PluginRegistry* registry) { + RivePluginRegisterWithRegistrar( + registry->GetRegistrarForPlugin("RivePlugin")); } diff --git a/trackeroo/windows/flutter/generated_plugins.cmake b/trackeroo/windows/flutter/generated_plugins.cmake index b93c4c3..ea49fcc 100644 --- a/trackeroo/windows/flutter/generated_plugins.cmake +++ b/trackeroo/windows/flutter/generated_plugins.cmake @@ -3,6 +3,7 @@ # list(APPEND FLUTTER_PLUGIN_LIST + rive_common ) list(APPEND FLUTTER_FFI_PLUGIN_LIST -- GitLab